Загрузить файл трассировки на SQL Server — доступ запрещен

#sql-server

#sql-server

Вопрос:

Итак, на работе мне был предоставлен файл трассировки размером 500 МБ, чтобы попытаться диагностировать некоторые проблемы. Мы нашли несколько виновников, я думаю, это проблемы, но они хотят, чтобы я выполнил несколько запросов к данным, чтобы доказать мою гипотезу. Я установил SQL Server 2017 Developer локально, чтобы у меня была локальная база данных, с которой я мог бы возиться, и не могу заставить ее работать.

 DROP TABLE TraceTemp;
SELECT * INTO TraceTemp FROM::fn_trace_gettable('C:UserschalewisDesktopsql.trc',default);
  

Я продолжаю получать следующую ошибку. Файл ‘C:UserschalewisDesktopsql.trc ‘ либо не существует, либо произошла ошибка при открытии файла. Ошибка = ‘5 (доступ запрещен.)’.

  • База данных и файл находятся на одном компьютере, поэтому путь должен быть правильным (для его получения использовалась функция Windows копировать как путь).

  • Я вошел в систему, используя проверку подлинности Windows, и могу нормально загрузить файл в профилировщик SQL Server.

  • Трассировка была захвачена профилировщиком SQL Server.
  • Я предоставил разрешение на свой рабочий стол {имя_компьютера} / MSSQLSERVER

Что-нибудь еще, что я могу сделать?

Комментарии:

1. Я бы предположил, что учетная запись службы не имеет доступа к местоположению C:UserschalewisDesktopsql.trc . SQL Server на самом деле не должен иметь доступа и к документам других пользователей. Я предлагаю поместить файл в папку, которая не является вашим рабочим столом, а затем предоставить учетной записи службы доступ к этой папке (если она этого еще не сделала).

2. Я переместил его в C: и это сработало. Пытался предоставить разрешения mssqlserver, но, думаю, он не должен использовать это или мои учетные данные, чтобы попытаться получить доступ к файлу: (

3. Нет, SQL server не использует ваши учетные данные (или учетные данные того, кто выполняет запрос) для доступа к файлу при обращении к папке, он использует учетные данные учетной записи, от имени которой запущена служба.

Ответ №1:

Доступ к папке / файлу обычно осуществляется пользователем, на котором запущена ваша служба Sql Server (проверьте через services.msc), и предоставьте этому пользователю права доступа к папке (я предполагаю, что это NT ServiceMSSQLSERVER в вашем случае).