使用查询通知

SQL Server 2005 引入了查询通知,利用这一新功能,应用程序可以请求 SQL Server 在查询结果发生变化时发出通知。查询通知允许程序员设计这样的应用程序:只有在应用程序以前检索的信息发生变化时,该应用程序才查询数据库。

例如,联机目录应用程序可以缓存某个查询(列出待售项)的结果。该应用程序基于缓存的数据显示目录。当待售项列表发生变化时,应用程序中的事件处理程序将收到通知事件,然后删除缓存的数据。下次客户请求待售项列表时,应用程序查询数据库中的当前数据,然后更新通知订阅。

应用程序可以利用查询通知来减少往返数据库的次数。开发人员可以设计当查询结果过期时自动收到通知的应用程序,而不用编写定期重复执行查询以维护当前结果的代码。使用查询通知,应用程序可以发出包含查询和通知请求的命令。应用程序缓存查询的结果或从查询结果中生成的动态内容。当应用程序收到查询通知时,应用程序将清除缓存的内容。然后在应用程序需要更新后的查询结果时,应用程序将重新发出查询和通知请求。

数据库引擎使用“通知订阅”来跟踪查询通知的请求。当命令包含通知请求时,数据库将请求注册为通知订阅,然后执行命令。

数据库引擎使用 Service Broker 来传递通知消息。因此,Service Broker 在应用程序请求订阅的数据库中必须是活动的。查询通知功能不需要也不使用 Notification Services。查询通知与事件通知无关。

若要获取不包含订阅的数据库中的通知消息,必须将包含订阅的数据库的 TRUSTWORTHY 属性设置为 ON。有关详细信息,请参阅 ALTER DATABASE (Transact-SQL)