ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Asp.net 数据库缓存依赖(SQLServer 2005)

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

原创 Linux操作系统 作者:iDotNetSpace 时间:2010-01-20 15:05:29 0 删除 编辑

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中配置(不是必须的)


   
        
     
    
   
  

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中的语句),创建成功!

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12639172/viewspace-625603/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5766145