【发布时间】:2012-10-18 06:02:41
【问题描述】:
我正在将一些代码部署到生产环境中,这是将系统从 SQL 2000 升级到 SQL 2008。
在我的一个存储过程中遇到了一个神秘问题,它从数据库中获取一些数据,然后通过 bcp(成功)创建一些文件,然后它尝试执行几个移动命令,它们甚至都失败了尽管文件夹确实存在并且服务以系统管理员身份运行。
这是它试图执行的代码:
set @cmd_string = 'move '+ @OutPath_AllCards + '*.* '+ @ArchivePath_AllCards
delete from @tbl_xp_cmdshell_output
Insert @tbl_xp_cmdshell_output exec @error_temp = master.dbo.xp_cmdshell @cmd_string
这是我收到的错误消息
xp_cmdshell Error Executing "move H:\Transfer\CHAD\Outbound\AllCards\*.* H:\Transfer\CHAD\Outbound\AllCards\Archive\"
返回的命令行错误是
"The filename, directory name, or volume label syntax is incorrect."
这在相同设置的 UAT 版本的数据库中工作正常
有什么建议吗?
更新:
如果源目录中没有文件,我可以重现错误。我认为源目录中可能应该有文件,但我想知道在 bcp 创建它们之前是否存在延迟,并且当它执行移动时它们还不存在?有什么想法吗?
【问题讨论】:
-
您在末尾缺少一个“。此外,您是否知道 a) 使用 xp_cmdshell 和 b) 以系统管理员权限运行服务帐户中存在大量安全漏洞?我恳请您重新审视您的策略!
-
我认为问题不是缺少引号,您会在输出中看到第二个较低的引号,这可能只是从结果表中解析出错误的结果.我当然知道 xp_cmdshell 的危险,但有时需要
-
抱歉,我似乎无法编辑我的问题,所以我将把它作为评论放入 - 如果源目录中没有文件,我可以重现错误。我认为源目录中可能应该有文件,但我想知道在 bcp 创建它们之前是否存在延迟,并且当它执行移动时它们还不存在?有什么想法吗?
-
@jazza1000 为您更新了您的问题