程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 實現SQL Server 2005數據庫緩存依賴

實現SQL Server 2005數據庫緩存依賴

編輯:關於SqlServer

使用方法和步驟如下:

step1

檢測是否已經啟用ServiceBroker,檢測方法:

SelectDATABASEpRoPERTYEX('數據庫名稱','IsBrokerEnabled')

--1表示已經啟用0表示沒有啟用

step2

如果ServiceBroker沒有啟用,使用下面語句啟用:

ALTERDATABASE數據庫名稱SETENABLE_BROKER;

step3

在實現基於服務的SQL數據緩存依賴過程中,需要顯式調用SqlDependency.Start來啟動接受依賴項更改通知的偵聽器。

SqlDependency.Start(connectionString);//推薦將這段代碼加到Global.asax的Application_Start方法中

SqlDependency.Stop(connectionString);//用於關閉,可加在Global.asax的Application_End方法中

step4

該步驟分別有兩種不同的做法。該階段必須注意步驟。

方法A:建立連接對象,再創建一個SqlCommand實例,創建SqlCacheDependency實例,在這步之後再調用Command對象來獲取數據(這個順序很重要)。之後調用Cache的Insert語句建立一個依賴於一個具體查詢數據集的Cache項。

SqlConnectionconn=newSqlConnection(strConnection);SqlCommandcommand=newSqlCommand(strCommandText,conn);

SqlCacheDependencydependency=newSqlCacheDependency(command);

//注冊方法到委托,該委托是

CacheItemRemovedCallbackonRemove=newCacheItemRemovedCallback(RemovedCallback);

//新增或修改一條緩存記錄

Cache.Insert(strCacheKey,objAppCache,dependency,absoluteExpiration,slidingExpiration,CacheItemPriority.Default,onRemove);

方法B:建立連接對象,再創建一個SqlCommand實例,最後創建SqlDependency實例。定義SqlDependency的委托OnChange,當數據發生改變時做出相應的處理(比如清除Cache)。

SqlConnectionconn=newSqlConnection(strConnection);SqlCommandcommand=newSqlCommand(strCommandText,conn);

SqlCacheDependencydependency=newSqlCacheDependency(command);

dependency.OnChange+=newOnChangeEventHandler(Dependency_OnChange);

注意事項:

不知道是不是還存在BUG,我在項目開發中遇到一些奇怪的現象。同樣的代碼,在有的機器上運行則能捕捉到變化,有的則完全沒反應;也有時會出現Cache剛建立就反復發生依賴改變的事件。偶爾Cache還會數據發生變化卻不引發事件。

但從最終項目實施的情況看,似乎都只是某些機器環境造成的不確定因素?這個無法確定。不過起碼數據庫端是否正常啟用,可以通過SQLServerProfiler來查看監視。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved