尝试使用xp_cmdshell移动文件时拒绝访问

时间:2009-02-19 11:42:28

标签: sql sql-server-2005 tsql command-line windows-server-2003

我试图使用一些T-SQL将一些文件从一个目录移动到另一个目录。 我使用xp_cmdshell来调用move命令 就像这样:

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

但文件inst移动,#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 server代理帐户映射到本地管理员 如果我在输入移动命令

时打开命令提示符
move /y "D:\files\*.txt" "D:\oldfiles"

文件移动完美

这一切都发生在运行在w2k3服务器上的sql2005上。

我以本地管理员身份登录服务器

2 个答案:

答案 0 :(得分:11)

你能跑一个

吗?
exec master..xp_cmdshell 'set username'

并告诉它返回什么?

编辑:根据OP的评论,命令以NETWORK SERVICE运行。在相关目录上允许NETWORK SERVICE解决了问题。

答案 1 :(得分:1)

如上所述,它错过了许可。另一个简单的方法是,如果可能的话,只需通过xp_cmdshell创建文件夹。如果它是根目录,则无法应用。

exec xp_cmdshell 'mkdir d:\files'
exec xp_cmdshell 'mkdir d:\oldfiles'

确保文件夹具有正确的权限。