0
我試圖使用SQL triggers
運行存儲在D:\驅動器中的.bat文件。
當某個操作發生在表中時,需要觸發此觸發器並且必須執行批處理文件。 因爲我已經創建了一個示例觸發器。如何運行批處理文件(.Bat)使用SQL觸發器
Create TRIGGER [dbo].[TestBatch] ON [dbo].[RawMaterial]
FOR UPDATE
AS
DECLARE @PassedVariable VARCHAR(100)
DECLARE @CMDSQL VARCHAR(1000)
begin
--SET @PassedVariable = 'SqlAuthority.com'
SET @CMDSQL = 'D:\AutoServer.bat'-- + @PassedVariable
EXEC master..xp_CMDShell @CMDSQL
end
但我沒有得到正確的輸出。當我運行上面的腳本時,它給出了一些錯誤消息說。
"The device is not ready. NULL"
我會請求所有給我一個解決我的上述問題。 在此先感謝。
不要這樣做。使用xp_cmdshell運行批處理文件可能會出現很多錯誤,當它們出錯時,觸發器會阻止/回滾/錯誤更改數據庫。你應該改爲實施一個排隊系統。您觸發對隊列表的寫入,並且單獨的進程將記錄從隊列中取出並運行批處理文件。通過這種方式,您可以從批處理文件中分離數據庫更改。 –
關於你的錯誤:你確定所有你期望的驅動器都在那裏嗎?你的SQL Server上有一個D驅動器嗎?請記住,xp_cmdshell在SQL Server上運行,而不是在客戶端上,它(通常)將它們作爲SQL Server服務運行 –