为什么我可以从SQL Server运行.bat而不是.exe?

时间:2014-11-03 15:47:42

标签: sql-server exe xp-cmdshell

我可以从命令行运行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'从命令行然后它工作正常。

2 个答案:

答案 0 :(得分:0)

我只是将其作为代码格式的答案添加,但是尝试将exec包装在try catch中,看看问题是什么......

BEGIN TRY
    exec master..xp_cmdshell '\\fs01\filefolder\runpgm.bat'
END TRY
BEGIN CATCH 
    SELECT @ERROR_MESSAGE()
END CATCH

答案 1 :(得分:0)

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

长说明:

SQL Server不显示错误。 Power Shell也不是。要使用master..xp_cmdshell在SQL Server静默失败时进行调试,则需要退出SQL Server并使用[DOS] Command shell进行调试。 Command shell确实会弹出一个对话框,通知用户未安装.Net版本。或者,您需要远程进入SQL Server计算机才能尝试这一点。 : - )