2010-01-28 50 views
4

我已經發布過此文,但尚未獲得符合我要求的合適答案。我正在尋找一種技術,在對SQL Server表進行更改時通知C++應用程序。我們的中間層是C++,我們不打算轉移到.NET基礎結構上,這意味着我們不能使用SQLDependency或SQL通知服務器。我們也暫時停留在SQL Server 2005上,這也消除了SQL Service Broker外部激活(SQL 2008中引入的)。當在SQL Server表中進行更改時通知C++應用程序

爲了更加深入地理解我想要達到的目標:我們的數據庫正在被更新爲新的信息;每當收到一條新信息時,我們都會將其推送到C++應用程序,以使其儀表板反映用戶的最新數據。

我們知道我們可以通過讓C++應用程序輪詢數據庫來做到這一點,但我認爲這是低效的體系結構,並希望SQL將信息或通知推送到C++。

+0

@noob我們也在嘗試同樣的事情,我爲此閱讀了一些教程,最後大家都提出'QN'.but但我不知道如何實現這個你已經試過了,所以你可以告訴我如何實現這個? – subbu 2013-06-20 15:13:45

回答

4

您實際上可以使用由C查詢通知++。用於SQLNCLI10和SQLNCLI提供程序的OleDB和ODBC客戶端都支持查詢通知。請參閱Working with Query Notifications,在頁面的後半部分,您將找到用於ODBC語句的OleDB行集和SQL_SOPT_SS_QUERYNOTIFICATION...東西的SSPROP_QP_NOTIFICATION...。因此訂閱來自C++中間層的通知絕對是可行的。第二個難題是實際得到通知,這只是發佈RECEIVE並等待。換句話說,您可以將自己的SqlDepdency在純C++中通過OleDB或ODBC推出。一旦你獲得了中間層的通知,那麼更新客戶端顯示器是一件小事(很好,有點)。

在檢測數據更改的所有替代方法之間,找不到比查詢通知更好的東西。

順便說一句,你應該絕對避免的一件事是從觸發通知客戶(哦,恐怖......)。

+0

我第二個建議。不要使用觸發器來更新您的客戶端。用這種方法管理和解決問題是一場噩夢。 – sarvesh 2010-01-29 00:39:12

+0

如果你考慮QN,我建議你通過http://rusanu.com/2006/06/17/the-mysterious-notification/來簡單介紹一下什麼是技術。 – 2010-01-29 00:46:10

+0

Remus,我讀過SQL 2008中不贊成使用此功能。我知道它仍然可以在SQL 2008中使用,但是我猜想關注的是,在某些時候我們需要切換到新的技術。 – n00b 2010-01-29 01:31:09

1

我會建議編寫一個使用Net Pipes通知你的應用程序的SQL CLR觸發器。

HTH

-1

還有另外一個建議,它可能更簡單,你可能認爲這個建議是垃圾,因爲這樣做的冗長方式,爲什麼不發送電子郵件觸發通知的表,如插入/刪除/更新到主題爲'DATA CHANGE NOTIFY'的私人電子郵件地址,您的C++應用程序可以定期通過POP3進行輪詢以檢查私人電子郵件地址中的電子郵件... Mercury pop3框可以在服務器上使用(它是xampp應用程序)只是一個想法...

希望這會有所幫助, 最好的問候, 湯姆。

+0

謝謝你的建議湯姆。我想我正在尋找一個優雅的解決方案。我正在查看查詢通知。當我完成後,我會公佈研究和實施的結果。 – n00b 2010-01-29 00:31:46

相關問題