欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【SQL Server 2005实现数据库缓存依赖】,下面是详细的分享!
SQL Server 2005实现数据库缓存依赖
使用方法和步骤如下:
step1
检测是否已经启用ServiceBroker,检测方法:
SelectDATABASEpRoPERTYEX('数据库名称','IsBrokerEnabled')
--1表示已经启用0表示没有启用
step2
如果ServiceBroker没有启用,使用下面语句启用:
ALTERDATABASE数据库名称SETENABLE_BROKER;
step3
在实现基于服务的SQL数据缓存依赖过程中,需要显式调用SqlDependency.Start来启动接受依赖项更改通知的侦听器。
SqlDependency.Start(connectionString);//推荐将这段代码加到Global.asax的Application_Start方法中
SqlDependency.Stop(connectionString);//用于关闭,可加在Global.asax的Application_End方法中
step4
该步骤分别有两种不同的做法。该阶段必须注意步骤。
方法A:建立连接对象,再创建一个SqlCommand实例,创建SqlCacheDependency实例,在这步之后再调用Command对象来获取数据(这个顺序很重要)。之后调用Cache的Insert语句建立一个依赖于一个具体查询数据集的Cache项。
SqlConnectionconn=newSqlConnection(strConnection);SqlCommandcommand=newSqlCommand(strCommandText,conn);
SqlCacheDependencydependency=newSqlCacheDependency(command);
//注册方法到委托,该委托是
CacheItemRemovedCallbackonRemove=newCacheItemRemovedCallback(RemovedCallback);
//新增或修改一条缓存记录
Cache.Insert(strCacheKey,objAppCache,dependency,absoluteExpiration,slidingExpiration,CacheItemPriority.Default,onRemove);
方法B:建立连接对象,再创建一个SqlCommand实例,最后创建SqlDependency实例。定义SqlDependency的委托OnChange,当数据发生改变时做出相应的处理(比如清除Cache)。
SqlConnectionconn=newSqlConnection(strConnection);SqlCommandcommand=newSqlCommand(strCommandText,conn);
SqlCacheDependencydependency=newSqlCacheDependency(command);
dependency.OnChange+=newOnChangeEventHandler(Dependency_OnChange);
注意事项:
不知道是不是还存在BUG,我在项目开发中遇到一些奇怪的现象。同样的代码,在有的机器上运行则能捕捉到变化,有的则完全没反应;也有时会出现Cache刚建立就反复发生依赖改变的事件。偶尔Cache还会数据发生变化却不引发事件。
但从最终项目实施的情况看,似乎都只是某些机器环境造成的不确定因素?这个无法确定。不过起码数据库端是否正常启用,可以通过SQLServerProfiler来查看监视。
以上所分享的是关于SQL Server 2005实现数据库缓存依赖,下面是编辑为你推荐的有价值的用户互动:
相关问题:sql server2005数据库其中一个库状态为关闭,正常...
答:你好,在SQL SERVER里数据库的状态没有关闭这个状态。 截图出来看看 你可以始终如下语句试试是否可以使数据库恢复正常. RESTORE DATABASE dbname WITH RECOVERY ALTER DATABASE dbname SET ONLINE ALTER DATABASE dbname SET READ_WRITE >>详细
相关问题:如何实现SQL Server 2005数据库自动备份压缩
答:实现SQL server2005数据库自动备份压缩功能有两种方式,自动功能和用第三方工具,自带功能比较复杂,请直接参考百度文库教程,如下:http://wenku.baidu.com/link?url=HzqV-FOopbL8jCl1fx8Fh0E5qgS4dGrONoc3xRGcDcx6rQbS9hkobN4aq4MQdX12JdFKHva... >>详细
相关问题:无法连接SQL数据库进行缓存依赖项注册 无法打开登...
答:我是这样解决的: 查看数据库 --安全性---登录名 ,看看有没有“pet”这个用户名,没有则新建,角色为 public 和 sysadmin 。映射的话选你要处理的表。当然“混合模式”那里还是要调的。然后试试pet能不能登录数据库,可以的话就创建“数据库缓存依赖... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
