2012-04-01 103 views
1

我正在尋找更好的機制來通知我的桌面客戶端一個SQL服務器表已經更改。排除應用服務器層的選項,我正在研究適合現有胖客戶端 - > Sql服務器模型的解決方案。我熟悉觸發器和輪詢,但希望有更聰明的東西。SQL服務器更改通知和SqlDependency

一個選項似乎是SqlDependency。目前我正在研究這個問題,但是有一些人提到它有「限制」,可能對於大量的改變是「不適合的」。我還沒有找到很多關於這方面的信息,或許多最近的代碼示例。

你用什麼來通知sql server表已被修改?

回答

2

除非你有服務,即所有chnages表通過它,然後你是輪詢或依賴。所有的依賴都是掛鉤到sql server自己的表更改代碼並啓動更改事件。底層機制非常簡單,並且可能會因大量更改而淹沒,嘗試合理化事件處理程序中的更改至多是有問題的。

你可能會在某處觸發一個「通信表」,在那裏你可以添加合理化邏輯,然後使用依賴關係。

因此,不是檢測對table1中column1的簡單更改,而是觸發對comms表中的事件記錄的插入。

這將是一個PIA,因爲你已經排除了應用服務器層,你也大大限制了你做高效率和高效的選擇。

+0

哦,如果可以的話,我會有一個應用程序層。目前這不是一個選項:/關於依賴關係的信息不多,只是關於它的一些奇怪的註釋有點不妥。感謝您的建議,我認爲我將觸發器添加到幾個「通信」表中,然後對這些表進行輪詢。 – Ian 2012-04-01 18:31:10