zoukankan      html  css  js  c++  java
  • 【缓存】Sql Server 2005/2008 SqlCacheDependency查询通知的使用总结

    Sql server 7.0/2000下 SqlCacheDependency使用轮询的方式进行缓存失效检查, 虽然ms说对服务器压力不大, 但还是有一些的, 而且对于不常改动的混存内容无休止的轮询感觉有点浪费, 不很经济.

     

    Sql server 2005/2008下增加使用查询通知方式进行缓存失效检查, 它通过Sql Server内部的消息队列进行异步通知, 这样就大大减轻了服务器的压力, 实现的很经济, 下面就是具体的步骤:

     

    1.检测是否已经启用Service Broker

      Select DATABASEpRoPERTYEX('数据库名称','IsBrokerEnabled')  -- 1 表示已经启用 0 表示没有启用

     

    2.启用Service Broker                   

      ALTER DATABASE 数据库名称 SET ENABLE_BROKER;                 

      注意:如果执行此语句处于假死状态,请重启(restart)数据库,然后什么都别做, 先执行上面启用Service Broker这个语句就行了!

     

    3.给您的数据库访问帐号授予权限

      GRANT SUBSCRIBE QUERY NOTIFICATIONS TO test

      注意:这一步非常重要, 如果没有权限, 数据库改变的通知将无法接收, cache永远都不会被刷新,我开始是用的sa帐号,死活都不刷新,花了我两天时间调试这个问题, 还是无法给sa授此权限(ms禁止), 所以,换个数据库访问帐号即可.

     

    4.检查是否有以前的缓存错误

    隐藏行号 复制代码 这是一段程序代码。
    1. USE [master]
          
    2. GO
          
    3. ALTER DATABASE Northwind SET  SINGLE_USER WITH ROLLBACK IMMEDIATE
          
    4. GO
          
    5. ALTER DATABASE Northwind SET  SINGLE_USER 
          
    6. GO
          
    7. ALTER DATABASE Northwind SET ENABLE_BROKER 
          
    8. GO
          
    9. ALTER DATABASE Northwind SET  MULTI_USER 
          
    10. GO 
          

    5、启动SqlDependency监听.

       在Global.ascx里的Application_Start和Application_End里增加如下代码:

    隐藏行号 复制代码 这是一段程序代码。
    1. void Application_Start(object sender, EventArgs e)
      
    2. {
      
    3.     string connString2 = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["NorthwindConnectionString1"].ConnectionString;
      
    4.     System.Data.SqlClient.SqlDependency.Start(connString2);
      
    5. }
      
    6. 
      
    7. void Application_End(object sender, EventArgs e)
      
    8. {
      
    9.     string connString2 = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["NorthwindConnectionString1"].ConnectionString;
      
    10.     System.Data.SqlClient.SqlDependency.Stop(connString2);
      
    11. }
      

    6、主体程序

     

    webfrom1: 单表缓存

    webfrom2: LINQ TO SQL 缓存

    webfrom3: LINQ TO SQL 多表缓存

    download2_6_3

  • 相关阅读:
    超简单开发自己的php框架一点都不难
    .htaccess技巧: URL重写(Rewrite)与重定向
    htaccess附录:正则表达式、重定向代码
    编写自己的PHP MVC框架笔记
    微信企业号-上传、获取临时素材文件
    练习6.43:、6.45、6.46
    关于函数的特殊用途的语言特性的注意事项
    练习6.40、6.41
    练习6.39
    练习6.30、6.31、6.32
  • 原文地址:https://www.cnblogs.com/jx270/p/4212266.html
Copyright © 2011-2022 走看看