#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
в вашем случае).