時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
使用方法和步驟如下:
step1
檢測(cè)是否已經(jīng)啟用ServiceBroker,檢測(cè)方法:
SelectDATABASEpRoPERTYEX('數(shù)據(jù)庫(kù)名稱(chēng)','IsBrokerEnabled')
--1表示已經(jīng)啟用0表示沒(méi)有啟用
step2
如果ServiceBroker沒(méi)有啟用,使用下面語(yǔ)句啟用:
ALTERDATABASE數(shù)據(jù)庫(kù)名稱(chēng)SETENABLE_BROKER;
step3
在實(shí)現(xiàn)基于服務(wù)的SQL數(shù)據(jù)緩存依賴(lài)過(guò)程中,需要顯式調(diào)用SqlDependency.Start來(lái)啟動(dòng)接受依賴(lài)項(xiàng)更改通知的偵聽(tīng)器。
SqlDependency.Start(connectionString);//推薦將這段代碼加到Global.asax的Application_Start方法中
SqlDependency.Stop(connectionString);//用于關(guān)閉,可加在Global.asax的Application_End方法中
step4
該步驟分別有兩種不同的做法。該階段必須注意步驟。
方法A:建立連接對(duì)象,再創(chuàng)建一個(gè)SqlCommand實(shí)例,創(chuàng)建SqlCacheDependency實(shí)例,在這步之后再調(diào)用Command對(duì)象來(lái)獲取數(shù)據(jù)(這個(gè)順序很重要)。之后調(diào)用Cache的Insert語(yǔ)句建立一個(gè)依賴(lài)于一個(gè)具體查詢(xún)數(shù)據(jù)集的Cache項(xiàng)。
SqlConnectionconn=newSqlConnection(strConnection);SqlCommandcommand=newSqlCommand(strCommandText,conn);
SqlCacheDependencydependency=newSqlCacheDependency(command);
//注冊(cè)方法到委托,該委托是
CacheItemRemovedCallbackonRemove=newCacheItemRemovedCallback(RemovedCallback);
//新增或修改一條緩存記錄
Cache.Insert(strCacheKey,objAppCache,dependency,absoluteExpiration,slidingExpiration,CacheItemPriority.Default,onRemove);
方法B:建立連接對(duì)象,再創(chuàng)建一個(gè)SqlCommand實(shí)例,最后創(chuàng)建SqlDependency實(shí)例。定義SqlDependency的委托OnChange,當(dāng)數(shù)據(jù)發(fā)生改變時(shí)做出相應(yīng)的處理(比如清除Cache)。
SqlConnectionconn=newSqlConnection(strConnection);SqlCommandcommand=newSqlCommand(strCommandText,conn);
SqlCacheDependencydependency=newSqlCacheDependency(command);
dependency.OnChange+=newOnChangeEventHandler(Dependency_OnChange);
注意事項(xiàng):
不知道是不是還存在BUG,我在項(xiàng)目開(kāi)發(fā)中遇到一些奇怪的現(xiàn)象。同樣的代碼,在有的機(jī)器上運(yùn)行則能捕捉到變化,有的則完全沒(méi)反應(yīng);也有時(shí)會(huì)出現(xiàn)Cache剛建立就反復(fù)發(fā)生依賴(lài)改變的事件。偶爾Cache還會(huì)數(shù)據(jù)發(fā)生變化卻不引發(fā)事件。
但從最終項(xiàng)目實(shí)施的情況看,似乎都只是某些機(jī)器環(huán)境造成的不確定因素?這個(gè)無(wú)法確定。不過(guò)起碼數(shù)據(jù)庫(kù)端是否正常啟用,可以通過(guò)SQLServerProfiler來(lái)查看監(jiān)視。
關(guān)鍵詞標(biāo)簽:SQL Server 2005,數(shù)據(jù)
相關(guān)閱讀
熱門(mén)文章 淺談JSP JDBC來(lái)連接SQL Server 2005的方法 SqlServer2005對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 sql server系統(tǒng)表?yè)p壞的解決方法 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫(kù)用戶、角色、架構(gòu)的關(guān)系
人氣排行 配置和注冊(cè)O(shè)DBC數(shù)據(jù)源-odbc數(shù)據(jù)源配置教程 如何遠(yuǎn)程備份(還原)SQL2000數(shù)據(jù)庫(kù) SQL2000數(shù)據(jù)庫(kù)遠(yuǎn)程導(dǎo)入(導(dǎo)出)數(shù)據(jù) SQL2000和SQL2005數(shù)據(jù)庫(kù)服務(wù)端口查看或修改 修改Sql Server唯一約束教程 SQL Server 2005降級(jí)到2000的正確操作步驟 sql server系統(tǒng)表?yè)p壞的解決方法 淺談JSP JDBC來(lái)連接SQL Server 2005的方法