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

标签:SQL,Server,2005,数据库,缓存,依赖
0
投稿

猜你喜欢

  • Oracle AS关键字 提示错误

    2011-04-18 12:42:00
  • Script 元素 type 属性的妙用

    2011-03-07 16:13:00
  • python实现b站直播自动发送弹幕功能

    2023-07-13 06:58:15
  • 用 jQuery 來做图片伪浮水印

    2010-08-09 12:42:00
  • 让MYSQL彻底支持中文

    2008-12-24 16:23:00
  • Python PyQt4实现QQ抽屉效果

    2023-10-08 08:06:42
  • Python grequests模块使用场景及代码实例

    2021-08-05 18:30:41
  • python切片复制列表的知识点详解

    2023-08-06 05:31:35
  • 网页禁用右键实现代码(JavaScript代码)

    2024-02-26 09:46:23
  • Python通过4种方式实现进程数据通信

    2023-11-04 15:13:48
  • 微信小程序开发之实现心情记事本

    2024-04-18 09:45:20
  • Python+tkinter实现制作文章搜索软件

    2021-02-01 15:11:05
  • 符合w3c标准flash插入代码,常用flash参数设置

    2009-01-20 18:47:00
  • RedHat下MySQL的基本使用方法分享

    2024-01-18 06:00:16
  • 合理利用页面标签元素有利用搜索引擎收录

    2008-11-03 11:49:00
  • 教你如何用python操作摄像头以及对视频流的处理

    2021-03-01 05:59:55
  • Python OpenCV一个窗口中显示多幅图像

    2023-12-09 19:38:04
  • 美图秀秀web开放平台--PHP流式上传和表单上传示例分享

    2023-11-15 08:34:42
  • Python方差特征过滤的实例分析

    2021-08-11 01:12:56
  • select into from和insert into select的使用举例详解

    2024-01-25 03:27:28
  • asp之家 网络编程 m.aspxhome.com