WEB开发网
开发学院数据库MSSQL Server 浅析SQL Server 2005中的主动式通知机制 阅读

浅析SQL Server 2005中的主动式通知机制

 2007-05-15 09:31:27 来源:WEB开发网   
核心提示: (3)接下来,SQL Server 2005会监控后续执行的DML语法,浅析SQL Server 2005中的主动式通知机制(3),并确定是否能够影响前一步返回给前端的数据集;一旦有影响,则会立即发送一个消息到Service Broker;(4)Service Broker的队列中有消息后

(3)接下来,SQL Server 2005会监控后续执行的DML语法,并确定是否能够影响前一步返回给前端的数据集;一旦有影响,则会立即发送一个消息到Service Broker;

(4)Service Broker的队列中有消息后,可能发生如下情况:

a)Notification在前端应用程序侦听的队列中放入消息,由ADO.NET的下层自动读取消息并触发事件;

b)在Service Broker内的消息持续保留着,较高级的前端应用程序会自己处理这个消息。

如前所述,由于SQL Server 2005的通知机制在基层上依赖于Services Broker,所以要发出通知的数据库必须让Services Broker启动。Services Broker利用SQL Server 2005所提供的队列创建异步通知。而通知其实就是一组Services Broker内置好的服务(也即是标准的消息、发送的消息及发送消息的规则等等)。下图2中,我们通过SQL Server Management Studio中的对象资源管理器窗口查看每一个范例数据库AdventureWorks的“Services Broker”节点下属相关的设置情况:

图2:SQL Server 2005在Services Broker中已经准备好主动式通知设置情况

前面已经提到,我们想通过SQL Server 2005的范例数据库AdventureWorks进行试验;所以,若要让程序能够收到通知,必须先启动该数据库的相应服务,同时还要允许登录的帐户订阅这种查询通知。下面SQL语句实现创建相应的设置:

--启动Service Broker服务支持
ALTER DATABASE AdventureWorks SET ENABLE_BROKER
--
--【提示】我们无法直接在sp_dboption中(使用“EXEC sp_dboption AdventureWorks”语句)
--看出某个数据库是否启动了Service Broker服务
--需要观察sys.databases的is_broker_enabled字段才知道是否已经启动—使用如下语句:
SELECT * FROM sys.databases
--允许某个账号订阅查询
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO [YourComputerNameUserName]

三、示例分析

上一页  1 2 3 4 5  下一页

Tags:浅析 SQL Server

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接