SQL Server的主动通知和应用

时间:2022-07-01 05:50:18

SQL Server的主动通知和应用

摘要:通过介绍SQL Server数据库中的主动通知运行机制,为应用程序在数据变化时,如何解决及时更新,消除轮询数据库,优化系统性能的问题上,提供一种便捷可行的方法。

关键词:主动通知机制;轮询数据;优化性能

中图分类号:TP311.13 文献标识码:A文章编号:1007-9599 (2010) 09-0000-01

SQL Server Active Notification&Application

Liu Junrong

(China's General Administration of Coal Geology Exploration Institute of Aerial Remote Sensing,Xi'an710054,China)

Abstract:By introducing the SQL Server database in the initiative to inform the operating mechanism for application data changes,how to solve the update,remove polling database,optimize system performance issues,

provide a convenient way possible.

Keywords: Proactive notification mechanism; Polling data; Optimize performance

一、 引言

在涉及数据库的程序开发时,会遇到一个典型问题:如何对数据库数据的变化更新进行及时响应。在以往低版本的SQL Server,为了了解数据库内数据发生更新后的状况,必须轮询数据库,或是在数据表上编写触发器,以及可能通过消息队列来通知等等。不管方式为何,大多需要设计者花些巧思进行大量工作和尝试,这显然是一些低效的资源利用。微软在其SQL Server 2005中成功引入了主动通知机制后,这种新的设计模式在SQL Server数据库所使用数据发生更改时,会主动地发出通知,从而消除了通过来回轮询数据库的方式查询数据变更,大大减少了网络浪费,极大可能的提高了系统性能。

二、主动查询通知

(一)运行机制

主动查询通知,是微软和SQL Server小组协作开发的,是在SQL Server数据库中引入的一种新特征“Service Broker”下实现的。Service Broker作为SQL Server数据库中新增的一项重要服务,为日趋流行的面向服务的架构在数据库存储级提供基础性支持。Service Broker把队列机制引入到数据库管理中,它使用一组队列与服务进行通讯,而服务反过来往回通讯以调用相应的实体。SQL Server数据库搭配 的相关组件和类,通过 Service Broker 服务通知客户端应用程序;一旦接到通知,客户端应用程序便可执行需要的业务逻辑。

图中,SqlCommand类中Notification属性存储查询通知的相关设置。当SqlCommand执行时,会让传递该执行需求的TDS表格数据流协议附加上Notification的信息;SQL Server数据库收到该需求后,为该需求注册通知,并执行该需求自身的SQL语句;接下来,SQL Server数据库会监控后续执行的DML数据操纵语法,并确定是否能够影响前一步返回给前端的数据集;一旦有影响,则会立即发送一个消息到Service Broker;Service Broker的队列中有消息后,Notification在前端应用程序侦听的队列中放入消息,由的下层自动读取消息并触发事件;或者Service Broker内的消息持续保留,由较高级的客户端应用程序自行处理这个消息。

(二)使用准备

SQL Server数据库在默认情况下处于高度安全的状态,因此,在基层上依赖于Services Broker的SQL Server数据库主动查询通告,若要让程序能够收到通知,必须的让要发出通知的数据库启动Services Broker服务,同时还要允许登录的帐户订阅这种查询通知。

(三)使用限制

查询通知是针对于并不经常改变的数据而设计的,每一个通知请求都要在SQL Server数据库中进行注册,最好把它应用于服务器端的程序缓冲查询结果;而对于客户端应用程序来说,应该限制查询通知的使用状况,依据微软的建议,应限制查询通知使用不多于十个并行用户,否则,可能会导致服务器产生资源问题。

三、实例中的应用

(一)实例要求

在SQL Server 2005服务器KC01上数据库 KQD的数据表LData中,记录接收外部数据有两种方式,一种是定期接收特定数据,另一种是接收随机响应数据;要求客户端程序依据数据表记录变化情况,完成所需的业务操作。

(二)实例分析

由于LData数据表的记录更新存在一定的不确定性,因此,为了及时响应,客户端程序可以结合SQL Server数据库主动查询通知,通过获取更新状况,来实现所需的业务操作。

(三)功能设计和实现过程

四、小结

SQL Server数据库作为微软.NET战略的重要组成部分之一,其主动查询通知机制结合SqlDependency进行的设计开发,已将底层架构从一种推模式改变为一种拉模式,这样不仅解决原有设计中的一些安全问题,也有效地减少了资源开支,提高了系统性能,具备很好的实用价值。

参考文献:

[1]SQL Server 2005联机丛书

[2]Visual Studio 2005文档

个人简介:刘俊蓉(1977-),女,陕西西安人,工程师,中国煤炭地质总局航测遥感勘查院,从事图像处理及相应系统应用开发。

上一篇:浅谈ASP网站的安全防护 下一篇:大型企业信息化建设中的风险管理探讨