2009-01-12 67 views
1

是否可以在Windows服務中觸發某個操作,或者是否有可能引發可從存儲過程中捕獲服務的事件。將存儲過程中的事件提升到Windows服務

如果您想象一個服務每5分鐘運行一次,那麼它會執行一些操作。如果數據庫或存儲過程中發生某些事情會被執行,我想在5分鐘之前觸發此操作。

有沒有人有任何想法?

感謝

埃德

回答

0

繼Mehrdad的評論之後,我能夠使用.NET框架中的SqlDependancy類來解決問題。

這個類允許你註冊一個SQL查詢並與它連接,當查詢的結果發生變化時引發一個事件來指示數據的變化。

這使我幾乎可以即時捕獲數據變化並進行適當處理。

爲了使用這個類,你需要將你想查詢看到數據庫上啓用查詢通知:Enabling Query Notifications

如何在Windows應用程序中使用這個類的一個好例子中發現here

1

您可以創建SQL Server中的CLR過程,不知怎的,使用SOAP,遠程處理,或任何介質中的服務進行通信。雖然這是通用的。我認爲SQL Server 2005的查詢通知功能在這裏很有幫助。

+0

我認爲你是對的,我剛剛閱讀了有關查詢通知,他們似乎是我有問題的正確答案。謝謝。 – MrEdmundo 2009-01-12 17:21:09

0

如果你做一個RAISERROR(@的ErrorMessage,16,1)應該只要你用16的嚴重性和狀態,1

2

這聽起來像你不該」生成客戶端上的一個例外根本不使用Windows服務。我會設置一個SQL作業,每5分鐘運行一次,然後設置一個觸發器或任何您希望在必要時手動運行作業的事情。

編輯: 但是,如果服務在數據庫之外做一些事情,可以使用xp_cmdshell來運行系統命令(儘管不是最好的選擇)。

+0

DTS可能是比windows服務更好的解決方案。 – 2009-01-12 16:52:33