zoukankan      html  css  js  c++  java
  • Asp.net 数据库缓存依赖(SQLServer 2005)

    Asp.net 数据库缓存依赖(SQLServer 2005

    1.       检测是否已经启用Service Broker 

    Select DATABASEpRoPERTYEX('数据库名称','IsBrokerEnabled')  -- 1 表示已经启用 0 表示没有启用

    2.       启用Service Broker

    Alter database 数据库名称 set ENABLE_BROKER;

    3. vs2005库缓存依
    aspnet_regsql.exe -S localhost -U sa -P sa -d database -ed

    aspnet_regsql.exe -S localhost -U sa -P sa -d database -t table et

    可以通aspnet_regsql -?查看命令

    4. Gload.asxm中配置

    void Application_Start(object sender, EventArgs e)
        { // 在应用程序启动时运行的代码
           System.Data.SqlClient.SqlDependency.Start(ConnectionString);
        }
        void Application_End(object sender, EventArgs e)
        {// 在应用程序关闭时运行的代码
           System.Data.SqlClient.SqlDependency.Stop(ConnectionString);
        }

    5. Web.config中配置(不是必须的)

    <caching>
        <sqlCacheDependency enabled="true" pollTime="1000">
          <databases>  
          <add name="hnfms" connectionStringName="hnfmsConnectionString"/>
         </databases>
        </sqlCacheDependency>
       </caching>

    6. 应用程序数据缓存中使用

    SqlCommand cmd = new SqlCommand(sql,conn);                                   

    SqlCacheDependency scd = new SqlCacheDependency(cmd); 说明:这条语句最好在cmd执行操作之前执行,如

    SqlCacheDependency scd = new SqlCacheDependency(cmd); command.ExecuteReader();等语句前

    Cache.Insert(...,scd,...);

       注意:

        a).      必须设置完全限定名称的数据表。即表名前面需要加所有者,如dbo.test。

        b).      必须明确设置所访问数据库列名称,不能使用*

        c).      必须保证不是聚合函数。如COUNT、MAX等。

    7. 解决SqlServer启用数据表缓存信赖,非dbo构架的数据表注册不成功的问题

    问题提示:

    无法对触发器 'dbo.Production.Product_AspNet_SqlCacheNotification_Trigger' 执行创建,因为其架构不同于目标表或视图的架构。在缓存依赖项注册期间失败。

     请确保数据库名称和表名称有效。表名称必须符合 SQL 中规则标识符的格式。

     失败的 SQL 命令是: dbo.AspNet_SqlCacheRegisterTableStoredProcedure

    方法:

    1.打开当前数据库,在存储过程列表中找到名称为[dbo].[AspNet_SqlCacheRegisterTableStoredProcedure] 的存储过程并打开。

    2.将该存储过程内容的 SET @fullTriggerName = 'dbo.[' + @triggerName + ']'  修改为 SET @fullTriggerName = '[dbo.' + @triggerName + ']'

    3.执行该存储过程,然后重新创建数据表的缓存依赖(执行3中的语句),创建成功!

    参考:

    http://www.cnblogs.com/mrhgw/archive/2008/09/20/1294656.html

    http://hi.baidu.com/freesunshine/blog/item/5749e813ede7002bdc5401d0.html

  • 相关阅读:
    MySQL中TIMESTAMP和DATETIME区别
    图片标签的alt与title区别
    DEDE自带的采集功能,标题太短的解决方法
    Modernizr——为HTML5和CSS3而生!
    InnoDB,MyISAM,Memory区别
    Innodb,MyIsam,聚集索引和非聚集索引
    聚集索引与非聚集索引的总结
    程序kill -9与kill -15的区别,以及回调函数的作用
    linux 信号 SIGINT SIGTERM SIGKILL区别
    oracle mysql sqlserver 查看当前所有数据库及数据库基本操作命令
  • 原文地址:https://www.cnblogs.com/dingjing/p/1651775.html
Copyright © 2011-2022 走看看