有没有办法将事件绑定到Sql Server(特别是Azure),以便在表中有新数据时,我的.NET进程会收到通知?
我讨论的另一个选项是Sql Server long polling
查询。也就是说,我执行一个查询,但它没有返回任何东西,直到有东西返回或达到超时。
为了更清楚我的问题,我在Windows Azure的不同实例中有不同的线程等待通知。他们必须在收到新通知后立即采取行动。我不想让他们每2秒查询一次数据库或存储。
答案 0 :(得分:5)
不在Azure中。在包装产品中,您有Query Notifications及其衍生产品(SqlNotificationRequest
,SqlDependency
和SqlCacheDependency
),有关详细信息,请参阅The Mysterious Notification。您可以将它用作LinqToCache的
但Azure不支持查询通知。在Azure上,您的应用程序应在使用Azure Queues更新数据库时通知。
答案 1 :(得分:2)
您可以使用SqlTableDependency
SqlTableDependency是一个通用的C#组件,用于在指定数据库表的内容发生更改时接收通知。
.NET SqlDepenency有什么区别?
基本上,主要区别在于SqlTableDependency发送的事件包含插入,更改或删除的记录的值,以及在表上执行的DML操作(插入/删除/更新):SqlDepenency没有说明什么数据在数据库表上发生了变化,他们只说有些事情发生了变化。