在SQL Server中使用xp_cmdshell复制项目

时间:2013-07-31 20:15:56

标签: xp-cmdshell

我正在尝试使用xp_cmdshell发送“copy-item”命令来移动我之前在sproc中加密的项目。在sproc中,我创建一个.bat文件,作为计划任务执行,以进行加密。

我尝试使用相同的方法执行copy-item命令,以及基本的EXEC xp_cmdshell命令,但两者都不起作用。知道为什么它可以用来执行gpg,但是当我尝试执行copy-item命令时却不行吗?

这是我尝试过的:

set @cmd = 'copy-file c:\MissionControlDocs\'+@docFolder+@rawfilenamewoext+'.txt.gpg y:\aep-ohio>> ' + @batchFileName)
exec master..xp_cmdshell @cmd, no_output

并将命令选择到批处理文件中,然后调用任务(在服务器上成功运行):

select @cmd = rtrim('echo copy-file c:\MissionControlDocs\'+@docFolder+@rawfilenamewoext+'.txt.gpg y:\aep-ohio>> ' + @batchFileName)
exec master..xp_cmdshell @cmd, no_output       

当我直接在服务器上的powershell应用程序中运行它时,复制文件也可以工作 - 无论我目前在哪个目录。

非常感谢您的想法。

1 个答案:

答案 0 :(得分:0)

分两部分找到答案。

首先,我使用的是copy-item(实际上是powershell,而不是cmdshell)。

其次,我能够将复制行添加到我的.bat文件中,方法是将START / wait添加到上一行,以便在上一个命令完成之前我的拷贝行不会执行。