使用查询通知
Microsoft SQL Server 2005 引入了查询通知,这一新功能允许应用程序请求在查询结果发生变化时接收 SQL Server 的通知。查询通知允许程序员设计这样的应用程序:只有在应用程序以前检索的信息发生变化时,该应用程序才查询数据库。
例如,在线目录应用程序可以缓存某个查询(列出待售项)的结果。该应用程序基于缓存的数据显示目录。当待售项列表发生变化时,应用程序中的事件处理程序将收到通知事件,然后删除缓存的数据。下次客户请求待售项列表时,应用程序查询数据库中的当前数据,然后更新通知订阅。
应用程序可以利用查询通知来减少往返数据库的次数。开发人员可以设计当查询结果过期时自动收到通知的应用程序,而不用编写定期重复执行查询以维护当前结果的代码。使用查询通知,应用程序可以发出包含查询和通知请求的命令。应用程序缓存查询的结果或从查询结果中生成的动态内容。当应用程序收到查询通知时,应用程序将清除缓存的内容。然后在应用程序需要更新后的查询结果时,应用程序将重新发出查询和通知请求。
数据库引擎使用“通知订阅”**来跟踪查询通知的请求。当命令包含通知请求时,数据库将请求注册为通知订阅,然后执行命令。
数据库引擎使用 Service Broker 来传递通知消息。因此,Service Broker 在应用程序请求订阅的数据库中必须是活动的。查询通知功能不需要也不使用 Notification Services。查询通知与事件通知无关。
若要获取不包含订阅的数据库中的通知消息,必须将包含订阅的数据库的 TRUSTWORTHY 属性设置为 ON。有关详细信息,请参阅 ALTER DATABASE (Transact-SQL)。
请参阅
其他资源
Service Broker 简介
Service Broker 体系结构
事件通知(数据库引擎)
Working with Query Notifications