解析SQL Server 2005實(shí)現(xiàn)數(shù)據(jù)庫(kù)緩存依賴_Mssql數(shù)據(jù)庫(kù)教程
推薦:為何把你的數(shù)據(jù)庫(kù)置于版本控制之下做程序開發(fā)的人都知道版本控制的重要性, 代碼的管理好說(shuō),TFS/SVN/VSS/CVS,哪個(gè)都能用。但涉及到數(shù)據(jù)庫(kù)的版本控制,就不是太好做的。有的team是定期把數(shù)據(jù)庫(kù)的備份放到服務(wù)器上,但一來(lái)數(shù)據(jù)庫(kù)備份太大,而來(lái)二進(jìn)制的備份文件沒(méi)有簡(jiǎn)單的diff工具來(lái)比較變化。
使用方法和步驟如下:
step1
檢測(cè)是否已經(jīng)啟用ServiceBroker,檢測(cè)方法:
SelectDATABASEpRoPERTYEX('數(shù)據(jù)庫(kù)名稱','IsBrokerEnabled')
--1表示已經(jīng)啟用0表示沒(méi)有啟用
step2
如果ServiceBroker沒(méi)有啟用,使用下面語(yǔ)句啟用:
ALTERDATABASE數(shù)據(jù)庫(kù)名稱SETENABLE_BROKER;
step3
在實(shí)現(xiàn)基于服務(wù)的SQL數(shù)據(jù)緩存依賴過(guò)程中,需要顯式調(diào)用SqlDependency.Start來(lái)啟動(dòng)接受依賴項(xià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è)依賴于一個(gè)具體查詢數(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)目開發(fā)中遇到一些奇怪的現(xiàn)象。同樣的代碼,在有的機(jī)器上運(yùn)行則能捕捉到變化,有的則完全沒(méi)反應(yīng);也有時(shí)會(huì)出現(xiàn)Cache剛建立就反復(fù)發(fā)生依賴改變的事件。偶爾Cache還會(huì)數(shù)據(jù)發(fā)生變化卻不引發(fā)事件。
但從最終項(xiàng)目實(shí)施的情況看,似乎都只是某些機(jī)器環(huán)境造成的不確定因素?這個(gè)無(wú)法確定。不過(guò)起碼數(shù)據(jù)庫(kù)端是否正常啟用,可以通過(guò)SQLServerProfiler來(lái)查看監(jiān)視。
分享:詳解SQL Server數(shù)據(jù)體系和應(yīng)用程序邏輯在許多用SQL Server實(shí)現(xiàn)的新的企業(yè)系統(tǒng)設(shè)計(jì)中,系統(tǒng)設(shè)計(jì)師需要在給數(shù)據(jù)結(jié)構(gòu)和管理應(yīng)用程序邏輯的定位上做出具有關(guān)鍵性意義的決定。SQL Server有它自己的編程語(yǔ)言(Transact-SQL,即TSQL),開發(fā)者可以用它來(lái)管理數(shù)據(jù)訪問(wèn)、代碼事務(wù)邏輯和交易控制。 使用TSQL,
- sql 語(yǔ)句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無(wú)法查看數(shù)據(jù)庫(kù),提示 無(wú)法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語(yǔ)句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過(guò)程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫(kù)教程推薦
猜你也喜歡看這些
- MySQL筆記之?dāng)?shù)據(jù)備份與還原的使用詳解
- 怎么重置mysql的自增列AUTO_INCREMENT初時(shí)值
- MYSQL SET類型字段的SQL操作知識(shí)介紹
- 擁有5星評(píng)級(jí)數(shù)據(jù)庫(kù)表結(jié)構(gòu) 如何才能更高效的使用?
- mysql使用source 命令亂碼問(wèn)題解決方法
- MySQL數(shù)據(jù)庫(kù)INSERT、UPDATE、DELETE以及REPLACE語(yǔ)句的用法詳解
- 解析SQLite中的常見問(wèn)題與總結(jié)詳解
- Java連接MySql的詳細(xì)介紹
- mysql創(chuàng)建函數(shù)出現(xiàn)1418錯(cuò)誤的解決辦法
- 解析SQL語(yǔ)句中Replace INTO與INSERT INTO的不同之處
- 相關(guān)鏈接:
復(fù)制本頁(yè)鏈接| 搜索解析SQL Server 2005實(shí)現(xiàn)數(shù)據(jù)庫(kù)緩存依賴
- 教程說(shuō)明:
Mssql數(shù)據(jù)庫(kù)教程-解析SQL Server 2005實(shí)現(xiàn)數(shù)據(jù)庫(kù)緩存依賴
。