2013-06-25 84 views
3

我目前正在使用Microsoft SQL Server 2008.不使用'SqlDependency'類監視數據庫更改

我的生產服務器負載很重。

我的C#應用​​程序使用'SqlDependency'類來監視某些表更改。

在開發環境 - 應用程序工作正常,並且來自SQL服務器的更改事件被正確觸發。

在生產環境 - 即使沒有任何變化,應用程序也會獲得更改事件。我已經讀過'SqlDependency'在重負載下表現不佳。

我正在尋找其他解決方案來解決這種情況,有什麼建議嗎?

回答

2

如果您在沒有更改時收到通知,則表示其他事件觸發了通知。您必須始終檢查您的OnChange處理程序上收到的參數SqlNotificationEventArgs,並根據Info,SourceType進行適當反應。在生產中,您很可能會收到像Info.Options這樣的通知,表示不正確的SET選項(即特定於環境的問題)。

至於關於SqlDependency負載下的評論,您必須鏈接源代碼。但總體上查詢通知是爲緩存失效而設計的,其數據變化不大很少

+0

我可以設置事件只會在發生一些「SqlNotification」條件時觸發嗎? 例如:當類型爲'訂閱'且來源爲'聲明'時,事件將啓動 – ohadinho

+1

事件因爲您的設置不正確而觸發。你不能通過簡單地聲明「我想忽略我的問題,讓它神奇地工作」來解決你的問題。 **解決事件**報告的問題。 –

+0

說錯誤的設置是什麼意思? 例如:我得到SqlNotificationInfo的「無效」。 如何檢查問題出在哪裏,或告訴SQL在獲取時不要提出事件? – ohadinho