1

Я пытаюсь использовать некоторые T-SQL для перемещения некоторых файлов из одной директории в другую. Im помощью xp_cmdshell для вызова команды перемещения Так же, как это:Доступ запрещен при попытке перемещения файлов с помощью xp_cmdshell

create table #output(line varchar(2000) null) 
insert into #output exec master..xp_cmdshell 'move /y "D:\files\*.txt" "D:\oldfiles"' 

Но файлы-экземпляра переместить и таблицу #output содержит этот вывод команды перемещения

Access is denied. 
Access is denied. 
Access is denied. 
Access is denied. 
Access is denied. 
Access is denied. 
     0 file(s) moved. 
NULL 

SQL, прокси-сервера учетной записи сопоставляются с локальным администратором Если я открыть командную строку в введите команду перемещения

move /y "D:\files\*.txt" "D:\oldfiles" 

Файлы отлично перемещены

Все это происходит на sql2005, запущенном на сервере w2k3.

Im вход на сервер в качестве локального администратора

ответ

9

Вы можете запустить

exec master..xp_cmdshell 'set username' 

и сказать, что это возвращается?

EDIT: По комментарию OP команды выполняются как NETWORK SERVICE. Разрешение NETWORK SERVICE в каталоге, о котором идет речь, решило проблему.

+1

Тогда один из способов его решения (без необходимости перенастройки учетной записи службы SQL Server) заключается в том, чтобы просто разрешить NETWORK SERVICE в каталоге. - Tomalak – CruelIO

+0

Он работает! Большое спасибо – CruelIO

+0

@Tomalak не могли бы вы объяснить свой ответ немного глубже? Что значит разрешить «Сетевую службу» в каталоге/как это сделать? Достигнуто ли это с указанной выше строкой кода? – Rachael

Смежные вопросы