数据库缓存依赖的配置
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
配置数据库缓存依赖示例
SqlDependency是.net2.0封装的一个类型,要配合sql2005或以上版本才能使用。实际使用的环境是2.0+sqlserver2008r2。
一、检测数据库是否已经启用ServiceBroker
Select DATABASEpRoPERTYEX('数据库名称','IsBrokerEnabled')
--1表示已经启用0表示没有启用
二、如果ServiceBroker没有启用,使用下面语句启用:
ALTER DATABASE 数据库名称SET ENABLE_BROKER
如果执行处于假死状态,执行
ALTER DATABASE DBName SET NEW_BROKER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE DBName SET ENABLE_BROKER;
立刻就会执行完毕
三、注册数据库
aspnet_regsql工具位于Windows\\Framework\[版本文件夹下],用管理员身份打开CMD窗口,进入上述目录,执行以下命令:
aspnet_regsql -S dev -U 用户名-P 密码-d 缓存数据库名称–ed
数据库中会生成新表AspNet_SqlCacheT ablesForChangeNotification
aspnet_regsql -S dev -U 用户名-P 密码-d 缓存数据库名称-t 数据表名称–et
表AspNet_SqlCacheTablesForChangeNotification中会生成新行
四、设置WebConfig
注意必须配置在
Polltime不能小于500,默认是60000。
五、代码示例
SqlCacheDependency dep = new SqlCacheDependency("数据库名", "表名");
if (Cache["SqlCon"] == null)
{
DataTable dt1=B_表名.GetList("").Tables[0];
Cache.Add("SqlCon", dt1, dep, DateTime.Now.AddSeconds(60), TimeSpan.Zero, CacheItemPriority.Normal, null);
}
六、注意
SqlCacheDependencyAdmin.EnableTableForNotifications在程序中进行注册不管用
aspnet_regsql中注册的表名有大小写问题,程序中必须一致
网上有些示例说需要:
SqlDependency.Start(connectionString); //推荐将这段代码加到Global.asax的Application_Start 方法中,
SqlDependency.Stop(connectionString); //用于关闭,可加在Global.asax的Application_End方法中。
事实证明可以不加。