SQL Server 2005的推出,使企业级的应用上了一个崭新的台阶,
也使.NET平台的根基进一步稳固,因为其两者的结合使用使数据库开发的简
便性不言而喻,Reporting Services、Notification Services等诸多功能
都让人心潮澎湃,今天就介绍一下其中的一个功能:查询通知的使用。
 查询通知简单的说就是在应用程序中向数据库发送一个查询请求并
请求查询通知后,数据库会监视任何执行修改操作的DML,当操作修改了所
监视的数据时,其会向应用程序发送消息告诉程序数据已修改。发送的消息
将通过sp_DispatcherProc存储过程发给应用程序,应用程序中将以
SqlDependency的OnChang事件接收消息,然后在OnChang中执行自己想要
的操作。

要使用查询通知请参考一下几个方面:
1、必须在msdb数据库中的QueryNotificationService服务上相Guest用户授
予发送权限,因为在修改数据时,SqlDenpendency对象会使用
ServiceBroker将消息发送给QueryNotificationService服务。
use msdb
grant send on service::
[http://schemas.microsoft.com/SQL/Notifications/QueryNotificationS
ervice]
to guest
方括号中的语句像一个url地址,但其实是QueryNotificationService服务
的完整名称,注意大小写不能错。
2、在数据库服务器上开启CLR,因为所用到的一个存储过程
sp_DispatcherProc中的代码是用.net的代码写的。
use master
exec sp_configure 'clr enabled', 1
reconfigure
3、启用Service Broker
alter database 数据库名 set ENABLE_BROKER
执行完后,可以用SELECT DATABASEPROPERTYEX('数据库名',
'IsBrokerEnabled')来验证是否开启了Service Broker,返回1表示true,
返回0表示false
4、如果数据库用户执行的命令包含通知订阅请求,则必须为此用户授予对
执行命令所在数据库的 SUBSCRIBE QUERY NOTIFICATIONS 权限。
use dbname
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO database_principal
5、创建通知的主体必须对运行查询的数据库具有下列权限才能使用
SqlDependency 成功创建通知:
CREATE SERVICE
CREATE QUEUE
CREATE PROCEDURE
6、若要接收通知,订阅用户必须对订阅数据库的
QueryNotificationErrosQueue 具有 RECEIVE 权限。
GRANT RECEIVE ON QueryNotificationErrosQueue TO login
7、还需要目标设备的 SEND 权限:
GRANT SEND ON SERVICE:://theservice to login
8、运行查询的用户必须对要访问通知的表具有 SELECT 权限。
在程序的代码上可以察看MSDN,有很详细的代码,最重要的一点是select语
句的写法,必须写出所有列名,不能使用*,且表名必须使用两个名称来定
义,如:dbo.tablename。
如果配置正确,打开SQL Profiler,运行程序后,可以看见程序向数据库发
送的包请求。另外需要注意的是SQL Server 2005 Express版不提供查询通
知,而且将Express版的数据库移植到正式版后查询通知似乎有问题,因为
本人就是移植了Express版的数据库后用了两天时间也没把查询通知做出来
,后来重建数据库后一切正常。

SQL Server 2005中查询通知的开启相关推荐

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

    一.引言 在开发多人同时访问的Web应用程序(其实不只这类程序)时,开发人员往往会在缓存策略的设计上狠下功夫.这是因为,如果将这种环境下不常变更的数据临时存放在应用程序服务器或是用户机器上的话,可以避 ...

  2. SQL Server 2005中创建CLR存储过程

    在2005之前的版本创建存储过程都是在数据库里面写Transact-SQL语言实现的,不过现在SQL Server 2005支持用其他面向对象的语言编写CLR存储过程了,关于这样做的好处,官方有很多解 ...

  3. SQL Server 2005 中的商务智能和数据仓库

    微软发布了SQL Server 2005,对于微软与BI来说这是一个非常重要的版本,它完善了微软在BI方面的产品线.SQL Server 2005以及 Visual Studio .net2005的整 ...

  4. SQL Server 2005 连接本地端口1433开启远程连接/登陆18456错误的解决方法

    SQL Server 2005 连接本地端口1433开启远程连接/登陆18456错误的解决方法 出处:http://jimmyli.blog.51cto.com/我站在巨人肩膀上Jimmy Li 作者 ...

  5. SQL Server 2005中的分析服务功能[转]

    XXXX(不知道为什么CnBlogs上的人这么抵制XXXX,呵呵--)上推出了"体验SQL Server 2005"活动,当然啦,一些关于SQL Server 2005的文章被翻译 ...

  6. Sql Server 2005 中的row_number() 分页技术

    原文发布时间为:2009-05-08 -- 来源于本人的百度文章 [由搬家工具导入] 在Sql Server 2005中,我们可以利用新增函数row_number()来更高效的实现分页存储 CREAT ...

  7. SQL Server 2005中更改sa的用户名和密码

    修改数据库SA账号名称的代码如下: 代码如下: Alter LOGIN sa DISABLE Alter LOGIN sa WITH NAME = [systemAccount] "syst ...

  8. SQL Server 2005 中提供的隔离级别

    SQL Server 2005 中提供的隔离级别 隔离级别 脏读(可能的情况) 非可重复读取(可能的情况) Phantom(可能的情况) 并发控制 读取未提交 是 是 是 (无) 读取已提交 否 是 ...

  9. Visual C# 2008+SQL Server 2005 数据库与网络开发--9.1.1 SQL Server 2005中的XML功能

    在SQL Server 2005中,对XML的支持已经集成到数据库本身的所有组件中,主要包括以下几方面. 支持XML格式的数据类型. 可以对XML格式的数据或者变量进行XQuery的查询. 增强了XM ...

最新文章

  1. GM Tech 2 works with Hummer Yes or No
  2. 链表问题13——删除无序单链表中值重复出现的节点(方法二)
  3. Rust 语言风靡学术界
  4. 3、spring注解注入
  5. UVa11464 - Even Parity(递推法)
  6. SQL 2005完全卸载,重新安装
  7. Oracle触发器(trigger):一般用法
  8. PlateSpin forge V2P回推步骤。
  9. Centos 利用yum源安装 nginx stream模块
  10. 汇编语言不带冒号标号的用法
  11. DVWA系列之24 high级别上传漏洞
  12. return中断方法和Unreachable code(永远达不到的代码)
  13. shell脚本拼接中间带空格的两个变量成一个变量
  14. Spring中事务的使用、抽象机制及模拟Spring事务实现
  15. 远程LInux和秘钥认证
  16. VC++ 结束线程 AfxBeginThread AfxEndThread
  17. 浅析.NET中的引用类型和值类型(下)
  18. 设计模式之GOF23解释器模式
  19. 8uftp,8uftp连接不上怎么办
  20. Photoshop提示暂存盘已满怎么办?ps暂存盘已满如何解决?

热门文章

  1. 用c设计一个函数 输入一段股票价格数据 使用均线算法返回一个值来表示股票未来涨跌趋势...
  2. [史上最全]16bit RAW图片读取、转换、裁切、保存
  3. 怎样才算压倒性投入?
  4. Anaconda闪退的问题
  5. C语言之volatile用法(二十一),2021最新Android面试笔试题目分享
  6. 打开关闭Macbook Air Pro 内置键盘
  7. 技师职业资格等级证书报名时间是什么?考试时间是什么时候呢?
  8. linux待机后视频声音有电流声-解决方法
  9. 车企数字化转型研究:如何实现“以用户为中心”的数字化转型?
  10. 一文带你秒懂如何构建MES系统(制造执行系统)