Asp.net 資料庫快取依賴(SQLServer 2005)

iDotNetSpace發表於2010-01-20

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部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-625603/,如需轉載,請註明出處,否則將追究法律責任。

相關文章