SQL Server 2005实现数据库缓存依赖
作者:网络渔夫 来源:cnblogs 发布时间:2009-05-07 13:20:00
使用方法和步骤如下:
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来查看监视。
猜你喜欢
- 如何让用户也能修改密码? 好了,照下面添加到你要添加的地方去:<%id = Request(&qu
- 这篇论坛文章着重介绍了SQL Server数据库简体繁体数据混用的问题,详细内容请参考下文:我现在要说的是一个在简体繁体数据混用的时候很容易
- 本文通过问答的开式来解答在mysql在命名用过程中所遇到的常见问题。谁能连接,从那儿连接?你可以允许一个用户从特定的或一系列主机连接。有一个
- 背景:pony是公司的首席体验官、首席产品经理。这次在产品峰会上pony将自己平时经验的积累与大家交流,体验较细。这次分享研发管理部,设计中
- 人工生命—群集智能—蚁群算法js版前言(摘自网上,代码是自己想出来的)对于普通大众来说,“人工生命”、“群集智能”、“仿生机器人”等等可能是
- Asp开发 联通CDMA以下是在开发wap中的随笔,其中一些对于“老鸟”来说,谈不上什么,希望对初学者有所帮助,大家有什么小技巧,欢迎顶上来
- 在安装了IIS以后,缺省的服务器端脚本语言被设置成VBScript。许多Web 开发团队在他们的开发环境中保持了这些缺省设置,这是不幸的,因
- 随机显示图片代码:<div class="sidebarcen"><script language=&
- 喜欢Gucci的优雅吗?或者痴迷美国普普艺术?谷歌中国最近改版的谷歌个性化首页iGoogle集中了近1500个主题,包括近120多位全球顶级
- 在前人的基础上,我对比较优秀的sql语句进行了重新的编辑和整理,力求精短易学。希望大家可以举一反三,更好学习sql语句,如果有问题,还请翻阅
- 和设计师打过交道的人一定也见到过少数极品,不是扎着小辫子留着小胡子,就是剃了光头抽根烟,通常说起来一套一套的人作品都很一般般,而作品一般般的
- 使用ASP实现网站的目录树数据库结构(共使用了两个表)1。tblCategory字段名 类型 Root&
- 经常在网上冲浪的朋友是否曾注意到有些网站的鼠标不是规则的斜向上箭头的形状,而是"十"
- 导语:简洁并不等于极简主义,在保持网站简洁的外观的同时,辅以其它元素的使用,同样能够达到要求。那如何做到这一点呢?通过本文你能从中学到一些经
- 问题当浏览SQL Server 2008的新特性时,我们看到了透明数据加密。这看起来很有趣。您能为我们解释一下并介绍下执行它的细节吗?专家解
- 什么是1433端口 1433端口,是SQL Server默认的端口,SQL Server服务使用两个端口:TCP-1433、UDP-1434
- 从MySQL 5.0.2开始,通过mysql_stmt_attr_set() C API函数实现了服务器端光标。服务器端光标允许在服务器端生
- 如何制作一个倒计时的程序? 见下:<%CountdownDate = #1/1
- SQL Server2005数据项的分拆与合并:参考示例如下:-- ====================================
- 其实这个问题落伍谈了n次了其中care4也说了两次所以如果你有问题最好先搜索一下 说不定问题早有人解决了http://www.im286.c