使用基于轮询的SQL数据缓存依赖
当使用SQLSERVER2000中的SQL数据缓存依赖功能时,不得不采用轮询的机制检测特定数据库和数据库表中的数据是否发生更改。
三个步骤:
1.需要使用aspnet_regsql命令行或者SqlCacheDepencyAdmmin类配置数据库。目的是启用数据库对SQL数据缓存依赖功能的支持。
adpnet_regsql命令行的功能是完成有关数据库连接、应用服务、SQL数据缓存以来、会话状态等方面的配置。主要用来实现两项任务:
一是启用指定数据库的SQL数据库缓存依赖功能。aspnet_regsql -S ZGQ -U sa -P sa -d pubs -ed
二是启用指定表的SQL数据缓存依赖功能。aspnet_regsql -S ZGQ -U sa -P sa -d pubs -t titles -et
这两项配置完成后在数据库中回新建一个名为“AspNet_SqlCacheTablesForChangeNotification”表。它是启用了指定数据库的数据缓存依赖后,自动创建的数据表。该表用于记录在数据库中,启用了数据缓存依赖的数据表数据被更新的概况信息。表中有三个数据列。列tableName用于存储被更新的数据表的名称,(这些表必须启用了SQL数据缓存依赖);列notifacationCreated是用于存储数据表被更新的时间;列changeid是每当所跟踪数据表的数据发生变化时,这个字段的值就加一。ASPNET将依靠changeid的数据来决定是继续使用缓存中的数据对象还是进行更新操作。另外在数据库中还增加了几个数据存储过程、角色、触发器等。这些都是SQL数据缓存依赖功能而自动生成的。
获取当前数据库中启用SQL数据缓存以来功能的数据表列表。
aspnet_regsql -s ZGQ -U sa -P sa -d pubs -lt
关闭数据库的数据缓存依赖功能
aspnet_regsql -s ZGQ -U sa -P sa -d pubs -dd
关闭数据表的数据缓存依赖功能
aspnet_regsql -s ZGQ -U sa -P sa -d pubs -t titles -dt
也可以使用SqlCacheDepencyAdmmin类配置数据库实现SQL缓存依赖功能
建议在Global.ascx文件中使用SqlCacheDepencyAdmin类实现对SQL缓存依赖功能的统一管理:
<%@ Application Language="C#" %>
<%@ Import Namespace="System.Configuration" %>
<%@ Import Namespace="System.Web.Caching" %>
<script runat="server">
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
//以下实现的是启用数据库和数据库表的缓存依赖功能
//如果登陆用户不具有管理pubs数据库的权限,将发生异常
//获取连接字符串
string connectionString = ConfigurationManager.ConnectionStrings["SQLCONNECTIONSTRING"].ConnectionString;
//变量needToInstall指示是否需要起用数据缓存依赖功能
bool needToInstall = true;
try
{
//获取数据库中已经具有数据缓存依赖功能的数据表名称列表
string[] tables = SqlCacheDependencyAdmin.GetTablesEnabledForNotifications(connectionString);
if (tables != null)
{
foreach (string table in tables)
{
//如果已经包含准备设置缓存依赖的表,设置needToInstall值为false
if(table.ToLower().Equals("titles"))
{
needToInstall = false;
}
}
}
}
catch (Exception ex)
{
needToInstall = true;
}
//如果变量needToInstall值为true,则启用数据库pubs和数据库表titles的缓存依赖功能。
if (needToInstall)
{
try
{
//启用数据库pubs的数据缓存依赖功能
SqlCacheDependencyAdmin.EnableNotifications(connectionString);
//启用数据库表titles的数据缓存依赖功能
SqlCacheDependencyAdmin.DisableTableForNotifications(connectionString, "titles");
}
catch (Exception ex)
{
}
}
}
void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码
}
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
}
void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
}
void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。
}
</script>
2.配置Web.config文件
使用基于轮询的SQL数据缓存依赖相关推荐
- SQL server数据缓存依赖
为什么80%的码农都做不了架构师?>>> SQL server数据缓存依赖有两种实现模式,轮询模式,通知模式. 1 轮询模式实现步骤 此模式需要SQL SERVER 7.0/ ...
- python在线投票系统系统_基于轮询实现实时的在线投票系统
需求 用户在投票的页面可以实时的监测到,投票详情 在这里我会通过轮询和长轮询(推荐使用这个,可以减少请求数,实时性也好)的方法来实现 基于轮询实现投票系统 大致的思路是前端开启一个定时器每隔10秒定时 ...
- 如何基于java代理对大数据缓存组件返回的数据进行脱敏和阻断
如何基于java代理对大数据缓存组件返回的数据进行脱敏和阻断 背景 架构拓扑图 实现方式对比 UDF方案 优点: 缺点: 改写返回结果方案 优点: 缺点: 说明 实现 默认处理方式 redis报文解析 ...
- DW1000开发笔记(五)DW1000使用轮询方式接收数据
系列文章 DW1000开发笔记(一)DW1000芯片概览 DW1000开发笔记(二)使用STM32硬件SPI+STM32cubeMX+HAL库测试DW1000通信 DW1000开发笔记(三)基于STM ...
- html5 轮询自动刷新数据,后台调用exe,前端定时轮询调用结果
前提 使用asp.net core 2.1 前端使用vue ui使用element-ui 前端发送请求用Axios 新建asp.net core程序 1.jpg 修改Index.html @{ Lay ...
- DW1000开发笔记(四)DW1000使用轮询方式发送数据
系列文章 DW1000开发笔记(一)DW1000芯片概览 DW1000开发笔记(二)使用STM32硬件SPI+STM32cubeMX+HAL库测试DW1000通信 DW1000开发笔记(三)基于STM ...
- Windows phone 应用开发[2]-数据缓存
今天把JDi/Server测试做完.终于有了时间来写写关于这个项目总结.关于我在博客上Post这些文章内容都是从实际项目应用而来.当然有些问题解决方案也是不断被重复设计修改.期间也碰到诸多问题.也曾为 ...
- ajax轮询模拟websocket,Ajax轮询和SSE服务器推送数据与websocket模式的区别性学习
我们试想一下我们做个实时聊天的窗口有几种方法? 在我们不刷新页面并且可以试试更新页面内容的方法 你这时候是不是想到了ajax没错确实可以 Ajax轮询 什么是轮询?顾名思义就是我轮着问你,规定一个时间 ...
- linux 网卡 轮询,中断还是轮询?取个数据包真麻烦!
原标题:中断还是轮询?取个数据包真麻烦! 网络部新员工 我叫Robert,是Linux帝国一个普通的公民. 今天是我第一天上班的日子,我下了好大功夫才考上了帝国的公务员,根据我的成绩,我被分到了帝国网 ...
- SQL Server SqlCacheDependency 缓存依赖
SQL server数据缓存依赖有两种实现模式,轮询模式,通知模式. 1 轮询模式实现步骤 此模式需要SQL SERVER 7.0/2000/2005版本以上版本都支持 主要包含以下几步: 1. ...
最新文章
- c++重载(以运算符重载为主)
- python进程执行带有参数的任务(args、kwargs)
- 【呆子化雨】浅谈Discuz插件开发-邮件验证提醒插件
- git 在 A 项目中引用 B 项目
- MONGODB 数据的存储顺序发现不是按_ID 的顺序存储的原因
- ElementUI 组件库 md-loader 的解析和优化
- npm 安装依赖遇到的问题
- Java基础——Java多线程中sleep()、wait()和notify()
- 刚刚上班才回来,今天和你说说hash数组
- 十分钟,我搞定了一个人物检测模型
- 在操作系统中进程是如何通信的
- mysql 主从 单表_MySQL主从复制单表或者多表
- Java基础教程汇总
- 3、	如何搭建高德离线地图服务
- Eclipse的配置使用
- c语言中,exit(1)是什么意思?
- DFT的简单介绍(上)
- 数理统计三(随机分布)
- Linux详细安装教程(Centos)
- 好用的报表分析软件有哪些?
热门文章
- 使用 Vim 的 jump list 看代码
- What is a TensorFlow Session?
- How To Search and Restore files from Site Collection Recycle Bin
- Hibernate框架(一)——总体介绍
- 类库从自带的配置文件中获取信息(DLL文件 获取 DLL文件自带的配置信息) z...
- WPF-21:WPF实现仿安卓的图案密码键盘(改进)
- SharePoint2013 App 开发中 自定义网站栏,内容类型,列表。
- Centos5.5服务器ROOT密码破解
- Linux进程间通信之信号量
- 常见的资源记录类型及应用示例