Mep*_*toe 35 sql-server notifications sql-server-2008
我有一个由数据库和几个服务组成的应用程序.其中一个服务将信息添加到数据库(由用户触发).
另一个服务定期查询数据库以进行更改,并使用新数据作为输入进行处理.
到目前为止,我使用了一个可配置的计时器,每30秒左右查询一次数据库.我读到了有关更改通知的Sql 2005.但是,在Sql 2008中,不推荐使用此功能.
直接在代码中收到数据库中发生的更改通知的最佳方法是什么?什么是最佳做法?
Ric*_*kNZ 18
Notification Services已被弃用,但您仍然不想使用它.
您可以在某些情况下考虑Service Broker消息; 细节取决于您的应用程序.
在大多数情况下,您可以使用SqlDependency或SqlCacheDependency.它们的工作方式是在发出查询时在查询中包含一个SqlDependency对象.查询可以是存储过程中的单个SELECT或复杂的命令组.
稍后,如果另一个Web服务器或用户或Web页面对可能导致上一个查询结果发生更改的DB进行更改,则SQL Server将向已注册SqlDependency对象的所有服务器发送通知.您可以注册代码以在这些事件到达时运行,或者事件可以简单地清除缓存中的条目.
虽然您需要启用Service Broker来使用SqlDependency,但您不需要显式地与它进行交互.但是,您也可以将其用作替代机制; 将其视为一种持久的消息传递系统,可以保证消息顺序和一次性传递.
对于论坛帖子,如何使用这些系统的细节有点长.您可以为他们提供Google,也可以在我的书中提供示例(超快速ASP.NET).
是的,这篇博文解释了通知服务现已被弃用,以及未来的替代品或替代方案。
出于您的目的 - 获得有关数据库中发生的更改的通知 - 听起来您想要SQL Server 更改跟踪。但通知是拉模型 - 您的应用程序必须对更改表进行查询。
我无法弄清楚 SqlDependency 是否继续与已弃用的通知服务一起使用。