ADO.NET 2.0中的查询通知
http://tech.ddvip.com 2008年01月22日 社区交流
内容摘要:学习如何使用ADO.NET 2.0和SQL Server 2005中新的通知技术处理即席数据刷新。
SQL Server 2005使用Service Broker传递通知。Service Broker是SQL Server中内置的异步消息队列功能。查询通知将使用Service Broker的SERVICE。此处的SERVICE是指异步消息的目的地;可以强制要求消息必须遵循被称为合同的一组规则。每个Service Broker的SERVICE始终和某个队列,也就是物理的消息目的地相关联。查询通知合同是内置在SQL Server中的,名称为http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification.
注意:尽管合同在SQL Server中的对象名看似一个URL,但却与该位置没有任何联系。它只是一个对象名,就像dbo.authors是个表名而已。
总而言之,查询通知消息的目的地可以是任何SERVICE,只要该SERVICE支持相应的合同。使用SQL DDL定义service的语句如下所示:
CREATE QUEUE mynotificationqueue
CREATE SERVICE myservice ON QUEUE mynotificationqueue
([http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification])
GO
现在就可以使用myservice的SERVICE作为查询通知请求的目的地了。SQL Server通过将消息发送到SERVICE的方式发布通知。可以使用您自己的SERVICE或者让SQL Server选择MSDB数据库中的一个内置SERVICE。如果使用您自己的SERVICE,您必需自己编写代码读取和处理消息。但如果使用MSDB中内置的SERVICE,则使用预先写好的消息投递的代码。后面我还会再探讨这一点。
由于查询通知需要使用Service Broker,因此有一些其它要求:
1.必须在通知查询运行的数据库上开启Service Broker。在SQL Server Beta 2中,默认AdventureWorks示例数据库没有开启该功能,可以使用“ALTER DATABASE SET ENABLE_BROKER”的DDL语句开启该功能。
来源:51CTO 责编:豆豆技术应用