zoukankan      html  css  js  c++  java
  • SqlCacheDependency特性

    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存储过程。其执行的过程就是修改
  • 相关阅读:
    Integer值判断是否相等问题
    Java连接Redis
    oracle 10G 没有 PIVOT 函数怎么办,自己写一个不久有了
    前端修炼(第三天)函数
    前端 JS 修炼(第一天)包装对象、作用域、创建对象
    linux oracle 启动全过程
    「android」webview中文乱码
    「dos」bat单条命令跨多行
    「股票」东方财富网公式-缩量
    「android」as javadoc乱码
  • 原文地址:https://www.cnblogs.com/wenjl520/p/1554310.html
Copyright © 2011-2022 走看看