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存储过程。其执行的过程就是修改
  • 相关阅读:
    42. Trapping Rain Water
    223. Rectangle Area
    645. Set Mismatch
    541. Reverse String II
    675. Cut Off Trees for Golf Event
    安装 VsCode 插件安装以及配置
    向上取整 向下取整 四舍五入 产生100以内随机数
    JS 判断是否为数字 数字型特殊值
    移动端初始配置,兼容不同浏览器的渲染内核
    Flex移动布局中单行和双行布局的区别以及使用
  • 原文地址:https://www.cnblogs.com/wenjl520/p/1554310.html
Copyright © 2011-2022 走看看