快速业务通道

C# SqlDependency数据库查询通知

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-04-11

先引用一段MDSN的备注:

SqlDependency 非常适用于使用缓存的情况,在这种情况下您的 ASP.NET 应用程序或中间层服务需要将某些信息缓存在内存中。SqlDependency 允许您在数据库中的原始数据发生更改时接收通知,以便刷新缓存。

若要建立依赖项,需要将一个 SqlDependency 对象与一个或多个 SqlCommand 对象关联。要接收通知,需要订阅 OnChange 事件。

SqlDependency 被设计为用在 ASP.NET 或中间层服务中,这里对数据库有活动依赖项的服务器的数量相对较少。它不应用在客户端应用程序中,因为其中可能有成百上千个客户端计算机将为单个数据库服务器建立 SqlDependency 对象。

我们以SQL Server 2005或 SQL Server 2008为例实现SqlDependency机制

注意:依赖是基于某一张表的,而且查询语句只能是简单查询语句,不能带top或*,同时必须指定所有者,即类似[dbo].[Users]

实现:

在SQL Server 2005上执行 ALTER DATABASE <DatabaseName> SET ENABLE_BROKER; 语句让相应的数据库启用监听服务,以便支持SqlDependency特性。如果执行以上指令,很长时间都没有完成,请断开该数据库所有连接再执行.

实例代码:

C#代码
namespace Sov.ConsoleApp   
{   
    class Program   
    {   
        public static string connectionstring = "data source=(local);initial catalog=RBAC;user id=sov;password=sov123;Asynchronous Processing=true;MultipleActiveResultSets=true;Integrated Security=True";   
  
        /// <summary>   
        /// 查询并监听   
        /// </summary>   
        public void DoSqlDependency()   
        {   
            using (SqlConnection conn = new SqlConnection(connectionstring))   
            {   
                string sql = "SELECT userID,Username,Password FROM dbo.[Users] WHERE UserID=''1''";   
  
                SqlCommand cmd = new SqlCommand(sql, conn);   
  
                //清除   
                cmd.Notification = null;   
  
                //设置通知   
                SqlDependency dep = new SqlDependency(cmd);   
  
      &nb

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号