步骤一:

sql数据库必须开启ServiceBroker服务,首先检测是否已经启用ServiceBroker,检测方法:

SELECT DATABASEPROPERTYEX('dbName','IsBrokerEnabled') --1表示已经启用,0表示未启用

如果是创建的新数据库,默认是已启用(1)。如果还原数据库,默认是未启用(0)。

步骤二:

如果ServiceBroker没有启用,使用下面语句启用:

ALTER DATABASE dbName SET ENABLE_BROKER;

此行此语句时有可能时间会很长,对此可以重启SQL查询编辑再执行以上语句。

步骤三:

如果使用的是SQL Server 2005/2008版本数据库,只需在Page_Load或者Application_Start使用如下语句即可启用ASP.NET对应的SQL缓存:

SqlCacheDependencyAdmin.EnableNotifications(ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString);

对于使用更低版本需要使用aspnet_regsql来配置。

另外,在最初时使用的是如下语句:

String[] tables = ConfigurationManager.AppSettings["CacheDataTable"].Split(',');

SqlCacheDependencyAdmin.EnableTableForNotifications(ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString, tables);

在使用上面的语句始终报异常:没有为 SQL 缓存通知启用数据库(不知道为什么)

步骤四:

通过以上步骤就可以编写相应的缓存代码,代码如下:

public class TableDependency
{
protected char[] configurationSeparator = new char[] { ',' }; protected AggregateCacheDependency dependency = new AggregateCacheDependency(); protected TableDependency(string configKey)
{
string dbName = ConfigurationManager.AppSettings["CacheDatabaseName"];//要缓存的数据库名称
string tableConfig = ConfigurationManager.AppSettings[configKey];//从配置文件中获取需要缓存的表,以','分隔
string[] tables = tableConfig.Split(configurationSeparator); foreach (string tableName in tables)
dependency.Add(new SqlCacheDependency(dbName, tableName));//把表以及对应的数据库添加到AggregateCacheDependency对象中
} public AggregateCacheDependency GetDependency()
{
return dependency;
}
}
String PHONE_HEAD_KEY="User_{0}";

String cacheKey = String.Format(PHONE_HEAD_KEY, ID);//缓存键

String data = (String)HttpRuntime.Cache[cacheKey];//首先从缓存来获取相应的数据

if (data == null)
{
//从数据库获取
data = db.GetData(); //获取一个AggregateCacheDependency对象,UserTableDependency保存的是表
AggregateCacheDependency cd = new TableDependency("UserTableDependency").GetDependency(); //添加到缓存
HttpRuntime.Cache.Add(cacheKey, data, cd, DateTime.Now.AddHours(10), Cache.NoSlidingExpiration, CacheItemPriority.High, null);
} Response.Write(data);

为ASP_NET应用程序启用SQL缓存的更多相关文章

  1. 搭建LNMP发布ecshop系统及压测启用opcache缓存与否的情况

    安装环境:CENTOS6.5,nginx1.6.2,php-5.5.18,mysql5.5.38 在安装软件之前安装epel源,就可以直接用yum安装libmcrypt,mhash,mcrypt等ph ...

  2. 8 -- 深入使用Spring -- 5...1 启用Spring缓存

    8.5.1 启用Spring缓存 Spring配置文件专门为缓存提供了一个cache:命名空间,为了启用Spring缓存,需要在配置文件中导入cache:命名空间. 导入cache:命名空间之后,启用 ...

  3. 微信小程序之本地缓存(十)

    [未经作者本人同意,请勿以任何形式转载] 目前,微信给每个小程序提供了10M的本地缓存空间(哎哟妈呀好大) 有了本地缓存,你的小程序可以做到: 离线应用(已测试在无网络的情况下,可以操作缓存数据) 流 ...

  4. 黑马程序员+SQL基础(上)

    黑马程序员+SQL基础 ---------------<a href="http://edu.csdn.net"target="blank">ASP ...

  5. WCF 无法激活服务,因为它不支持 ASP.NET 兼容性。已为此应用程序启用了 ASP.NET 兼容性

    无法激活服务,因为它不支持 ASP.NET 兼容性.已为此应用程序启用了 ASP.NET 兼容性.请在 web.config 中关闭 ASP.NET 兼容性模式,或将 AspNetCompatibil ...

  6. 怎样启用SQL SERVER混合身份验证方式

    转载:http://jingyan.baidu.com/article/380abd0aa8f2311d90192cd0.html 大家都知道sql server 有两种登录验证方式,即sql ser ...

  7. .NET CORE学习笔记系列(4)——ASP.NET CORE 程序启用SSL

    一.什么是SSL? 1.概念: SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数 ...

  8. Spring 整合 Hibernate 时启用二级缓存实例详解

    写在前面: 1. 本例使用 Hibernate3 + Spring3: 2. 本例的查询使用了 HibernateTemplate: 1. 导入 ehcache-x.x.x.jar 包: 2. 在 a ...

  9. 解决 SQL Server 所有帐号无 sysadmin 权限,且未启用 SQL Server 身份验证,sa 帐号也未启用的问题

    解决 未启用 SQL Server 身份验证 的问题: 1. 运行 regedit,进入注册表编辑器 2. 打开:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Micro ...

随机推荐

  1. Homekit_Dohome_月球灯

    此款月球灯可以使用Homekit或者Dohome App进行有效的智能控制,支持多种色彩和亮度调节,功能强大,有兴趣的可以去以下链接看看: https://item.taobao.com/item.h ...

  2. element-ui 格式化树形数组在table组件中展示(单元格合并)

    最近做的项目涉及到很多单元格合并问题,element-ui组件对于单元格合并的处理虽然很灵活,但是需要事先计算好每个单元格合并的rowspan和colspan,直接在span-method属性中计算实 ...

  3. java 与 springboot

    package geektime.spring.springbucks; import geektime.spring.springbucks.model.Coffee; import geektim ...

  4. eclipse中点击pre-commit Request to ReviewBoard,预提交框不显示问题

    需要设置:

  5. Windows 安装 kafka

    1.kafka下载地址:http://kafka.apache.org/downloads 解压:kafka_2.12-2.6.0.tgz 2.配置zookeeper 进入config目录找到文件zo ...

  6. 二叉搜索树及java实现

    二叉搜索树(Binary Search Tree) 二叉搜索树是二叉树的一种,是应用非常广泛的一种二叉树,英文简称为 BST 又被称为:二叉查找树.二叉排序树 任意一个节点的值都大于其左子树所有节 ...

  7. linux下top命令详细介绍

    linux下top命令详细介绍 top 命令是 Linux 下常用的系统资源占用查看及性能分析工具,能够实时显示系统中各个进程的资源(比如cpu.内存的使用)占用状况,top命令的执行结果是一个动态显 ...

  8. First-Spike-Based Visual Categorization Using Reward-Modulated STDP

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Abstract 强化学习(RL)最近以击败欧洲围棋冠军等重大成就重新受到欢迎.在这里,我们第一次表明,RL可以有效地用于训练一个脉冲神经 ...

  9. Django中views数据查询使用locals()函数进行优化

    优化场景 利用视图函数(views)查询数据之后可以通过上下文context.字典.列表等方式将数据传递给HTML模板,由template引擎接收数据并完成解析.但是通过context传递数据可能就存 ...

  10. Http请求-okhttp3基本用法

    简介 HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽.OkHttp是一个高效的HTTP客户端,它有以下默认特性: 支持HTTP/2,允许所有同一个主 ...