Почему я не могу читать файлы .BAK на рабочем столе, используя SQL Express в режиме аутентификации Windows - PullRequest
1 голос
/ 28 октября 2008

Я пытаюсь выполнить этот запрос SQL до восстановления файла .BAK в SQL Express. Первоначально у меня был файл на рабочем столе моей учетной записи пользователя. Я вошел в систему как администратор.

Когда я пытаюсь получить доступ к файлу .BAK на рабочем столе, как это

RESTORE FILELISTONLY FROM DISK= 'C:\Documents and Settings\Administrator\Desktop\file.bak'

Я получаю ошибку.

Msg 3201, Level 16, State 2, Line 1
Cannot open backup device 'C:\Documents and Settings\Administrator\Desktop\file.bak'. Operating system error 5(Access is denied.).
Msg 3013, Level 16, State 1, Line 1
RESTORE FILELIST is terminating abnormally.

Однако, когда я перемещаю файл .BAK в C:\temp и выполняю это

RESTORE FILELISTONLY FROM DISK= 'C:\temp\file.bak'

Работает просто отлично.

Я не могу понять, что происходит. Есть ли способ получить доступ к файлам на рабочем столе, используя проверку подлинности Windows с помощью SQL Express?

Ответы [ 3 ]

6 голосов
/ 28 октября 2008

Попробуйте предоставить разрешение на чтение Пользователям или ЛОКАЛЬНЫЙ СЕРВИС для папки C: \ Documents and Settings \ Администратор \ Рабочий стол \ в редакторе политик (щелкните правой кнопкой мыши папку и в На вкладке «Безопасность» нажмите «Добавить», затем «Дополнительно» ... | Найти сейчас

0 голосов
/ 28 ноября 2018

после SQL Server 2008R2 SP1 вам не нужно переходить на консоль управления службами (или запускать Services.msc), чтобы узнать учетную запись, под которой работает служба сервера sql.

просто используйте код ниже:

select * from
sys.dm_server_services

SELECT  DSS.servicename,
        DSS.startup_type_desc,
        DSS.status_desc,
        DSS.last_startup_time,
        DSS.service_account,
        DSS.is_clustered,
        DSS.cluster_nodename,
        DSS.filename,
        DSS.startup_type,
        DSS.status,
        DSS.process_id
FROM    sys.dm_server_services AS DSS;
0 голосов
/ 28 октября 2008

Когда вы запускаете сценарий восстановления, он выполняется в контексте учетной записи службы, под которой работает SQL Express. Перейдите в консоль управления службами (или запустите Services.msc) и найдите службу SQL Express и посмотрите, для какой учетной записи она настроена для запуска, а затем посмотрите разрешения для файла на рабочем столе и убедитесь, что эта учетная запись имеет доступ для чтения. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...