SqlCacheDependency特性

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

SqlCacheDependency特性SqlCacheDependency特性实际上是通过System.Web.Caching.SqlCacheDependency类来体现的。通过该类,可以在所有支持的SQL Server版本(7.0,2000,2005)上监视特定的SQL Server数据库表,并创建依赖于该表以及表中数据行的缓存项。当数据表或表中特定行的数据发生更改时,具有依赖项的数据项就会失效,并自动从 Cache中删除该项,从而保证了缓存中不再保留过期的数据。
由于版本的原因,SQL Server 2005完全支持SqlCacheDependency特性,但对于SQL Server 7.0和SQL Server 2000而言,就没有如此幸运了。毕竟这些产品出现在.Net Framework 2.0之前,因此它并没有实现自动监视数据表数据变化,通知ASP.NET的功能。解决的办法就是利用轮询机制,通过ASP.NET进程内的一个线程以指定的时间间隔轮询SQL Server数据库,以跟踪数据的变化情况。要使得7.0或者2000版本的SQL Server支持SqlCacheDependency特性,需要对数据库服务器执行相关的配置步骤。有两种方法配置SQL Server:使用aspnet_regsql命令行工具,或者使用SqlCacheDependencyAdmin类。4.2.1   利用aspnet_regsql工具aspnet_regsql工具位于Windows\Microsoft.NET\Framework\[版本]文件夹中。如果直接双击该工具的执行文件,会弹出一个向导对话框,提示我们完成相应的操作:
图4-1 aspnet_regsql工具如图4-1所示中的提示信息,说明该向导主要用于配置SQL Server数据库,如membership,profiles等信息,如果要配置SqlCacheDependency,则需要以命令行的方式执行。以 PetShop 4.0为例,数据库名为MSPetShop4,则命令为:
aspnet_regsql -S localhost -E -d MSPetShop4 -ed以下是该工具的命令参数说明:
-?   显示该工具的帮助功能;
-S   后接的参数为数据库服务器的名称或者IP地址;
-U   后接的参数为数据库的登陆用户名;
-P   后接的参数为数据库的登陆密码;
-E   当使用windows集成验证时,使用该功能;
-d   后接参数为对哪一个数据库采用SqlCacheDependency功能;
-t   后接参数为对哪一个表采用SqlCacheDependency功能;
-ed   允许对数据库使用SqlCacheDependency功能;
-dd   禁止对数据库采用SqlCacheDependency功能;
-et   允许对数据表采用SqlCacheDependency功能;
-dt   禁止对数据表采用SqlCacheDependency功能;
-lt   列出当前数据库中有哪些表已经采用sqlcachedependency功能。以上面的命令为例,说明将对名为MSPetShop4的数据库采用SqlCacheDependency功能,且SQL Server采用了windows集成验证方式。我们还可以对相关的数据表执行aspnet_regsql命令,如:
aspnet_regsql -S localhost -E -d MSPetShop4 -t Item -et
aspnet_regsql -S localhost -E -d MSPetShop4 -t Product -et
aspnet_regsql -S localhost -E -d MSPetShop4 -t Category -et当执行上述的四条命令后,aspnet_regsql工具会在MSPetShop4数据库中建立一个名为 AspNet_SqlCacheTablesForChangeNotification的新数据库表。该数据表包含三个字段。字段tableName记录要追踪的数据表的名称,例如在PetShop 4.0中,要记录的数据表就包括Category、Item和Product。notificationCreated字段记录开始追踪的时间。 changeId作为一个类型为int的字段,用于记录数据表数据发生变化的次数。如图4-2所示:
图4-2 AspNet_SqlCacheTablesForChangeNotification数据表除此之外,执行该命令还会为MSPetShop4数据库添加一组存储过程,为ASP.NET提供查询追踪的数据表的情况,同时还将为使用了 SqlCacheDependency的表添加触发器,分别对应Insert、Update、Delete等与数据更改相关的操作。例如Product数据表的触发器:
CREATE TRIGGER dbo.[Product_AspNet_SqlCacheNotification_Trigger] ON [Product]
     FOR INSERT, UPDATE, DELETE AS BEGIN
     SET NOCOUNT ON
     EXEC dbo.AspNet_SqlCacheUpdateChangeIdStoredProcedure N’Product’
END其中,AspNet_SqlCacheUpdateChangeIdStoredProcedure即是工具添加的一组存储过程中的一个。当对 Product数据表执行Insert、Update或Delete等操作时,就会激活触发器,然后执行 AspNet_SqlCacheUpdateChangeIdStoredProcedure存储过程。其执行的过程就是修改

 

 

本文转自温景良(Jason)博客园博客,原文链接:http://www.cnblogs.com/wenjl520/archive/2009/08/26/1554310.html/,如需转载请自行联系原作者

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
1月前
|
存储 算法 Python
算法的特性及其实现
算法是计算机科学中的核心概念,它代表了解决问题的步骤和过程。一个有效的算法不仅应当能够解决问题,还应当具有一些重要的特性,如正确性、可读性、健壮性、效率等。本文将详细讨论这些特性,并通过代码示例进行说明。
8 1
|
8月前
|
编译器 C语言 C++
【C++】---基础特性
【C++】---基础特性
61 0
|
7月前
|
安全 程序员 编译器
【c++11】c++11特性
【c++11】c++11特性
|
8月前
|
算法 程序员
认识算法的特性
努力是为了不平庸~ 算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!欢迎记录下你的那些努力时刻(算法学习知识点/算法题解/遇到的算法bug/等等),在分享的同时加深对于算法的理解,同时吸收他人的奇思妙想,一起见证技术er的成长~
68 1
|
9月前
|
Java C++
C++三大特性
C++作为一种强大的面向对象的语言,其语法的复杂性可谓最高,相比于Java有自动内存回收机制,C++里对于堆上的资源需要手动进行管理,但是随着C++智能指针的出现成功的解决了这一问题,但是也正是这样也早就了C++那么难学,但是C++的也有一个很大的优点就是效率极高,所以灵活应用C++提供的新特性将有利于我们的开发效率和程序的运行效率,本文将从C++最基本的三大特性开始介绍C++这门功能强大但又极其复杂的语言。
|
10月前
|
传感器 人工智能
热敏电阻、RTD、热电偶的原理和特性
热敏电阻是一种传感器电阻,其电阻值随着温度的变化而改变。按照温度系数不同分为正温度系数热敏电阻(PTC thermistor,即 Positive Temperature Coefficient thermistor)和负温度系数热敏电阻(NTC thermistor,即 Negative Temperature Coefficient thermistor)。正温度系数热敏电阻器的电阻值随温度的升高而增大,负温度系数热敏电阻器的电阻值随温度的升高而减小,它们同属于半导体器件。
|
11月前
|
存储 机器学习/深度学习 编译器
【C++】C++11常用特性总结-1
【C++】C++11常用特性总结-1
|
11月前
|
存储 编译器 对象存储
【C++】C++11常用特性总结-2
【C++】C++11常用特性总结--2
|
存储 Java 编译器
|
C# 图形学
C#——特性
C#——特性
54 0