2012-07-13 154 views
0

我一直在關於運行一個外部exe文件的研究。我迄今發現這是它可以使用 該這樣做:從SQL Server運行可執行文件

EXEC master..xp_cmdshell '"C:\New Folder\test.exe"' 

而且這也不能直接調用一個觸發器,因爲它必須等待,直到執行來完成的扳機。

因此,鼓勵使用的方法是安排一個計劃作業來查詢表並從那裏調用.exe文件,而不會產生任何性能問題。到目前爲止,我已經接受並開展工作。

因此,在嘗試這個之前,我正在研究每個必須在實現之前學習的部分。我正在測試上面的代碼塊,以保持數據庫爲主。 我已經嘗試了更多。

EXEC master..xp_cmdshell '"C:\New Folder\r.rar"' 

EXEC master..xp_cmdshell '"C:\New Folder\text.text"' 

所以,我想這xp_cmdshell的,作爲一個正常的命令提示符。我期待能看到exe文件打開和打開tet文件和rar文件。但它不工作。

我已經給出了上述細節來告訴我的方法,如果您在以前的經驗中有更好的方法,請給我一個反饋。提前致謝。

+1

你是什麼意思的「可見」?您位於SQL Server框中,希望在被SQL Server調用時看到rar打開?不,這不是它的工作原理。該進程在後臺運行,這就是爲什麼你從SQL Server以這種方式調用的程序不能依賴於UI組件,提示,用戶輸入等。 – 2012-07-13 12:22:51

+0

FoA我很抱歉,我無法關注你probelm,我有,好吧,現在我明白了,所以我們無法查看UI組件,因爲exe在服務器上執行。我認爲它就像,因爲它在我的電腦上工作,EXE在我的機器上打開,可以看到發生了什麼。 – 2012-07-16 03:27:36

回答

1

你得到什麼類型的錯誤的解決方案?

你可以得到這個問題,因爲組件被關閉作爲你的SQL服務器的安全配置的一部分。

系統管理員可以使用sp_configure啓用「xp_cmdshell」。有關啓用'xp_cmdshell'的更多信息,請參閱SQL Server聯機叢書中的「表面區域配置」。

+0

這個問題已經解決了。 – 2013-01-31 07:53:33

1

嘗試觸發

以下是運行從觸發.exe文件的代碼:你的exe文件的

CREATE TRIGGER trgAfterInsert on dbo.table_Demo 
DECLARE @CMDSQL VARCHAR(1000) 

設定的路徑,可以包括參數文件,如果需要的話。

SET @CMDSQL = 'cmd.exe /C "D:\Phoenix restart\612 League\code\PhoenixMallTest\bin\Release\PhoenixMallTest.Console.exe" App.ini' 
Exec master..xp_cmdshell @CMDSQL 
PRINT 'AFTER INSERT trigger fired.' 

如果SQL Server塊的xp_cmdshell或者說使xp_cmdshell的,你可以做以下。

Use Master 
GO 

EXEC master.dbo.sp_configure 'show advanced options', 1 
RECONFIGURE WITH OVERRIDE 
GO 

EXEC master.dbo.sp_configure 'xp_cmdshell', 1 
RECONFIGURE WITH OVERRIDE 
GO