我用到SqlDependency监控数据库某个表的实时变化,用 OnChange事件接收通知。在sql2005,server2003中一切正常,只要表有数据变化会马上接收到通知,但是现在环境升级到sql2008 R2,server2008 R2后,查询通知失效。代码没有任何变化,Service Broker已开启,但死活接收不到来自数据库表数据变化的通知。
  找了很多资料,依然无法解决,请大家帮帮忙看看是什么问题。

解决方案 »

  1.   

    你的缓存是轮询的么。在globle中设置
    SqlCacheDependencyAdmin.EnableNotifications(connectionString);
      

  2.   


        void Application_Start(object sender, EventArgs e)
        {
      
            System.Data.SqlClient.SqlDependency.Start(BLL.ConnectionString);    }    void Application_End(object sender, EventArgs e)
        {
            //  在应用程序关闭时运行的代码
            System.Data.SqlClient.SqlDependency.Stop(BLL.ConnectionString);
        }
      

  3.   

       是不是权限的问题。
       参考MSDN,上面有sql2008查询通知服务讲解。
       
    http://blogs.msdn.com/b/dataaccess/archive/2005/09/27/474447.aspx?CommentPosted=true
     
    http://www.sqlmonster.com/Uwe/Forum.aspx/sql-server-sb/192/SQL-2008-SqlDependency-Service-Broker-not-firing-data-changed