2014-11-03 99 views
3

我可以從命令行運行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

回答

0

我只添加此作爲代碼格式的答案,但在嘗試捕捉嘗試包裝你的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

0

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

長描述:

SQL Server不顯示錯誤。 Power Shell也不例外。要調試SQL Server靜默失敗時使用master..xp_cmdshell,則需要退出SQL Server並使用[DOS] Command Shell進行調試。命令外殼確實會導致彈出一個對話框,通知用戶未安裝.Net的版本。或者當然,你需要遠程進入SQL Server計算機才能試用。 :-)

相關問題