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

问题描述:

我可以从命令行运行my.exe。我可以从.bat运行它。但是,当我尝试在SQL Server中运行它们时,.exe似乎永远不会运行。为什么我可以从SQL Server运行.bat而不是.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' 在命令行,然后它工作正常。

+3

@closer,你的投票是不成熟的。这纯粹是有效的(有趣的)问题。 – 2014-11-03 15:50:16

+0

从我的经验来看,它应该有效。运行这个并告诉我们什么结果'EXEC master..xp_cmdshell'whoami' – 2014-11-03 15:53:01

+0

尝试添加在你的蝙蝠开始“pushd”%〜dp0“”和文件结尾添加“popd”,并让我们知道它是否它修复问题 – 2014-11-03 17:32:36

我只添加此作为代码格式的答案,但在尝试捕捉尝试包装你的exec所以看到的问题是什么?

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

谢谢。不幸的是,没有例外。现在,如果在.bat文件中确实存在一行错误的代码,那么在错误的行之后会得到一个结果行,例如:'REW'不会被识别为内部或外部命令, – maxweber 2014-11-04 15:18:01

根源:.NET版本不安装在SQL Server服务器上。

长描述:

SQL Server不显示错误。 Power Shell也不例外。要调试SQL Server静默失败时使用master..xp_cmdshell,则需要退出SQL Server并使用[DOS] Command Shell进行调试。命令外壳确实会导致弹出一个对话框,通知用户未安装.Net的版本。或者当然,你需要远程进入SQL Server计算机才能试用。 :-)