我希望我的数据库(SQL)通知或推送客户端应用程序的更新

mik*_*dev 21 sql-server service-broker push-notification sqldependency query-notifications

我开发这个应用程序VB.net 2010SQL 2008.
我希望通知客户端有关db的更新,以及用于使用计时器检查db在指定分钟内的更改的应用程序,这实际上效率不高.我读到query notification,sqldependency,service broker,但后来我读到的东西,说他们可能不是有效的,如果我有100个客户,我使用查询通知推送通知我的申请.
有人会帮我解决我应该做的事情,以及如何做到这一点(如果可以提供示例,将会非常有用).提前致谢!

Rem*_*anu 20

查询通知将推送到Service Broker服务,而不是直接推送到您的应用程序.请参阅神秘通知以了解它的工作原理.您的应用程序正在通过在数据库上发布WAITFOR(RECEIVE)语句来等待通知.这意味着100个客户端中的每一个都占用一个SQL Server工作线程(有限,请参阅选项).我已经看到这个在+1000个客户端的生产中工作(在提出最大工作线程选项之后),但我会反对它.max worker threads

我的建议是使用SqlDependency/QueryNotifications 让一个服务监视变更.然后,该服务将使用WCF将通知推送到您正在运行的所有应用程序.您将订阅泛型更改(the table Foo was changed),而不是特定的(the row x in table Foo was inserted).

作为一般规则,SqlDependency/Query Notifications只能通知您数据已更改,但不会推送数据.一旦通知,应用程序必须通过再次运行查询来刷新其本地数据集.