3

我可以从命令行运行 my.exe。我可以从 .bat 运行它。但是,当我尝试在 SQL Server 中运行它们时,.exe 似乎永远不会运行。

exec master..xp_cmdshell '\\fs01\filefolder\runpgm.bat'

这确实运行 .bat 但它运行的 .exe 永远不会运行。

echo %date% %TIME% >> \\fs01\filefolder\test.txt
\\fs01\filefolder\CallClickSoftWS.exe >> \\fs01\filefolder\test.txt
echo %date% %TIME% >> \\fs01\filefolder\test.txt
echo "Done" >> \\fs01\filefolder\test.txt
exit

如果我从命令行运行 '\fs01\filefolder\runpgm.bat' 那么它工作正常。

4

2 回答 2

0

我只是将其添加为代码格式化的答案,但尝试将您包装exec在 try catch 中,以便查看问题所在......

BEGIN TRY
    exec master..xp_cmdshell '\\fs01\filefolder\runpgm.bat'
END TRY
BEGIN CATCH 
    SELECT @ERROR_MESSAGE()
END CATCH
于 2014-11-03T15:57:33.610 回答
0

根本原因:.Net 版本未安装在 SQL Server 服务器上。

详细描述:

SQL Server 不显示错误。Power Shell 也没有。要在 SQL Server 使用 master..xp_cmdshell 静默失败时进行调试,您需要退出 SQL Server 并使用 [DOS] 命令 shell 进行调试。命令外壳确实会弹出一个对话框,通知用户未安装 .Net 的版本。或者,当然,您需要远程访问 SQL Server 计算机来进行尝试。:-)

于 2014-11-13T21:27:12.440 回答