SQL Server 2005实现数据库缓存依赖

数据库 SQL Server 数据库运维
SQL SERVER 2005内置支持SQL数据缓存依赖,内置通知传递服务,能够提供更小粒度的数据更改监测,使用和配置简单。

使用方法和步骤如下:

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来查看监视。

【编辑推荐】

  1. SQL Server 2008深度应用
  2. 浅谈配置SQL Server远程备份的方法
  3. SQL Server快速获取表的记录总数
责任编辑:彭凡 来源: cnblogs
相关推荐

2010-07-05 12:33:13

SQL Server

2010-07-22 14:46:41

SQL Server

2010-07-08 15:26:05

SQL Server

2010-06-30 13:19:17

SQL Server

2010-07-12 12:41:16

SQL Server

2010-07-20 10:02:41

SQL Server

2011-03-28 15:28:03

SQL Server 数据库

2010-07-16 14:17:18

SQL Server

2011-08-11 09:12:31

SQL Server nolock

2011-08-22 09:55:30

SQL Server 排序

2011-09-07 15:11:31

SQL Server同步

2011-08-04 15:20:52

SQL Server数据库镜像

2010-07-02 10:47:20

SQL Server

2011-08-15 15:40:57

SQL Server 系统数据库

2011-04-06 17:30:41

SQL ServerSQL

2011-03-28 14:16:31

SQL Server 数据库

2010-07-07 15:21:21

SQL Server

2011-08-22 14:00:13

SQL Server 游标调用函数

2011-07-15 11:02:47

SQL Server 用户权限设置

2010-07-15 17:28:50

SQL Server
点赞
收藏

51CTO技术栈公众号