SQL Server 2005實現(xiàn)數(shù)據(jù)庫緩存依賴
使用方法和步驟如下:
step1
檢測是否已經(jīng)啟用ServiceBroker,檢測方法:
SelectDATABASEpRoPERTYEX('數(shù)據(jù)庫名稱','IsBrokerEnabled') | 
--1表示已經(jīng)啟用0表示沒有啟用
step2
如果ServiceBroker沒有啟用,使用下面語句啟用:
ALTERDATABASE數(shù)據(jù)庫名稱SETENABLE_BROKER;
step3
在實現(xiàn)基于服務的SQL數(shù)據(jù)緩存依賴過程中,需要顯式調(diào)用SqlDependency.Start來啟動接受依賴項更改通知的偵聽器。
SqlDependency.Start(connectionString);//推薦將這段代碼加到Global.asax的Application_Start方法中  | 
step4
該步驟分別有兩種不同的做法。該階段必須注意步驟。
方法A:建立連接對象,再創(chuàng)建一個SqlCommand實例,創(chuàng)建SqlCacheDependency實例,在這步之后再調(diào)用Command對象來獲取數(shù)據(jù)(這個順序很重要)。之后調(diào)用Cache的Insert語句建立一個依賴于一個具體查詢數(shù)據(jù)集的Cache項。
SqlConnectionconn=newSqlConnection(strConnection);  | 
方法B:建立連接對象,再創(chuàng)建一個SqlCommand實例,***創(chuàng)建SqlDependency實例。定義SqlDependency的委托OnChange,當數(shù)據(jù)發(fā)生改變時做出相應的處理(比如清除Cache)。
SqlConnectionconn=newSqlConnection(strConnection);  | 
注意事項:
不知道是不是還存在BUG,我在項目開發(fā)中遇到一些奇怪的現(xiàn)象。同樣的代碼,在有的機器上運行則能捕捉到變化,有的則完全沒反應;也有時會出現(xiàn)Cache剛建立就反復發(fā)生依賴改變的事件。偶爾Cache還會數(shù)據(jù)發(fā)生變化卻不引發(fā)事件。
但從最終項目實施的情況看,似乎都只是某些機器環(huán)境造成的不確定因素?這個無法確定。不過起碼數(shù)據(jù)庫端是否正常啟用,可以通過SQLServerProfiler來查看監(jiān)視。
【編輯推薦】















 
 
 
 
 
 
 