专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-963-0016      微信咨询  |  联系我们

C#之SqlDependency数据库缓存

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 0:32:45       共计:3845 浏览

很多片段都是从网上摘过来得,由于有些问题不是很懂,所以中间出现不少问题,用来记录。

SqlDependency配合ServiceBroker实现缓存

步骤一:

sql数据库必须开启ServiceBroker服务,首先检测是否已经启用ServiceBroker,检测方法:

Select  DATABASEpRoPERTYEX('数据库名称','IsBrokerEnabled')

--1表示已经启用0表示没有启用

 

步骤二:

如果ServiceBroker没有启用,使用下面语句启用:

ALTER  DATABASE  <数据库名称>  SET  ENABLE_BROKER;

光用ALTER DATABASE DBName SET ENABLE_BROKER;语句开启经常会死机卡住,解决这个问题的方法是,先停止其它正在使用数据库的程序,然后运行

ALTER DATABASE DBName SET NEW_BROKER WITH ROLLBACK IMMEDIATE;

ALTER DATABASE DBName SET ENABLE_BROKER;

 

步骤三:

在实现基于服务的SQL数据缓存依赖过程中,需要显式调用SqlDependency.Start来启动接受依赖项更改通知的侦听器。

SqlDependency.Start(connectionString);//推荐将这段代码加到Global.asax的Application_Start方法中
SqlDependency.Stop(connectionString);//用于关闭,可加在Global.asax的Application_End方法中

 

WebConfig中增加SqlCacheDependency的配置(在 <system.web>节点中添加)

    <caching>
      <sqlCacheDependency enabled="true" pollTime="60000">
        <databases>
          <add name="StrName" connectionStringName="connectionStringsName" pollTime="60000"/>         
        </databases>
      </sqlCacheDependency>
    </caching>

 

这个配置是为了建立缓存依赖关系

 StrName:别名,此名称用作页面 @ OutputCache 指令上 sqlDependency
属性的一部分。

 pollTime:设置 sqlCacheDependency 轮询数据库表以查看是否发生更改的频率(以毫秒计算

connectionStringName:connectionStrings节点的 name 填写上就行了

 

应用程序级缓存

将 <%@ OutputCache Duration="15" VaryByParam="none" %>(无参数形式) 或<%@ OutputCache Location="Server" Duration="60" VaryByParam="txb_LoginName" %>(参数形式进行缓存控制,当控件ID为txb_LoginName的值发生变化时更新请求缓存页) 形式指令添加至页的顶部,用于配置单个页面的缓存。在某些情况下,可能希望为网站中的所有页配置缓存。可能还希望建立不同的缓存规则(配置文件),并将缓存配置文件应用到各组单独页面。设置应用程序级别缓存使您能够从单个配置文件更改缓存行为,而无需编辑各个页面的 @ OutputCache 指令。

1.在Web.config中添加system.web元素子项 <caching> <outputCacheSettings>     <outputCacheProfiles>         <add name="AppCache1" enabled="true" duration="60"/>     </outputCacheProfiles> </outputCacheSettings> </caching> 2.将 @ OutputCache 指令更改为以下内容:<%@ OutputCache CacheProfile="AppCache1" VaryByParam="none" %>

System.Web.Caching.SqlCacheDependency 让缓存更新的更及时更提高节能

 

 

开启缓存通知

aspnet_regsql.exe -S ADIMIN-B7575567/SQLEXPRESS -U sa -P sa -ed -d DBname -et -t tbdemo
aspnet_regsql.exe -C "connectionStrings" -ed -et -t "tb_demo"
aspnet_regsql.exe 一般存在VS 或者C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319下面
开启对数据库DBname表tbdemo表的缓存依赖,如果不开启,程序则会报异常:没有开启数据库XXX的缓存依赖,没有开启数据表XXX的缓存依赖
版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:SqlDependency C#代码监听数据库表的变化 | ·下一条:C#+SqlServer使用SqlDependency监听数据库表变化

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有