• Sql Server 2005 基于通知的缓存失效


    此机制使用   Sql   Server   2005   的查询更改通知机制来检测查询结果的更改。与   Sql   Server   7.0   和   2000   的基于轮询的失效不同,基于通知的失效所需的设置要少得多。  
    与基于轮询的失效不同,无需在应用程序的配置中注册任何   <sqlCacheDependency> 。而且,无需使用   aspnet_regsql.exe   工具进行任何特殊配置。  
    基于通知的依赖项是使用字符串   CommandNotification   在   OutputCache   指令上   配置的。此值告知   ASP.NET   应为页或数据源控件创建基于通知的   依赖项。  
    在页上:  
    <%@   OutputCache   Duration= "999999 "   SqlDependency= "CommandNotification "   VaryByParam= "none "   %>
    在数据源控件上:  
    <asp:SqlDataSource   EnableCaching= "true "   SqlCacheDependency= "CommandNotification "   CacheDuration= "Infinite "   ...   />
    在首次执行某   SQL   查询之前,必须在应用程序某处调用   System.Data.SqlClient.SqlDependency.Start()   方法。此方法应放在   global.asax   文件的   Application_Start()   事件中。  
    每当向   Sql   Server   2005   发出一个命令时,ASP.NET   和   ADO.NET   都会自动创建一个缓存依赖项,该缓存依赖项侦听从   Sql   Server   发送的更改通知。当数据在   Sql   Server   中更改时,这些通知会使得缓存的查询在   Web   服务器上失效。当下一次请求与依赖项相关联的页或数据源控件时,将再次执行该页或数据源控件,而不是提供缓存的信息。  
    阻止查询使用   Sql   Server   2005   查询通知的常见问题是:
    查询的   SELECT   语句中必须显式包含列名。使用“SELECT   *”将使查询不会在   Sql   Server   2005   查询通知中注册。  
    查询中的表名必须包括所有者名称。例如,如果对   pubs   数据库中的   authors   表发出一个查询,则该查询必须用“dbo.authors”   来引用表。  
    运行查询的安全标识必须具有在   Sql   Server   2005   中注册查询通知的权限。此权限可以使用下面的   T-SQL   命令来授予:GRANT   SUBSCRIBE   QUERY   NOTIFICATIONS   TO   username。  
    运行查询的安全标识还必须具有从   Sql   Server   2005   发送查询通知的权限。此权限可以使用下面的   T-SQL   命令来授予:GRANT   SEND   ON   SERVICE::SqlQueryNotificationService   TO   username。  
    注意:   对支持查询通知的查询语法有许多限制。有关具体约束的列表,请参见   Sql   Server   2005   Books   Online(《Sql   Server   2005   联机丛书》)中的主题“创建用于通知的查询”。另外,如果出现查询未被缓存,而是在每个页请求上都执行的情况,则可能是查询没有遵守   Sql   Server   2005   所要求的约束,或是   Sql   Server   2005   在尝试设置该查询的通知时产生错误。目前,当尝试在   ASP.NET   中设置缓存依赖项时,这些条件中的任何一个都会导致没有任何提示的错误,其最终结果是缓存依赖项始终失效,并因此使得所有相关联的查询始终会在每个页请求上执行。  

  • 相关阅读:
    Java中使用Lua脚本语言(转)
    lua、groovy嵌入到java中的性能对比(转)
    有人实践过 Phabricator 以及 Arcanist 作为 code review 的工具么?(转)
    Lua Development Tools (LDT)
    海量数据处理面试题集锦
    三层架构之抽象工厂加反射----实现数据库转换
    八卦一下
    java实现各种数据统计图(柱形图,饼图,折线图)
    activity-alias的使用
    C#反射Assembly 具体说明
  • 原文地址:https://www.cnblogs.com/slteam/p/1338512.html
Copyright © 2020-2023  润新知