SQL Server 2005 實現資料庫快取依賴的實現步驟整理
SQL SERVER 2005內建支援SQL資料快取依賴,內建通知傳遞服務,能夠提供更小粒度的資料更改監測,使用和配置簡單。使用方法和步驟如下:
step1 檢測是否已經啟用Service Broker,檢測方法:
Select DATABASEpRoPERTYEX('資料庫名稱','IsBrokerEnabled') -- 1 表示已經啟用 0 表示沒有啟用
step2 如果Service Broker沒有啟用,使用下面語句啟用:
ALTER DATABASE 資料庫名稱 SET ENABLE_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項。
SqlConnection conn = new SqlConnection(strConnection);
SqlCommand command = new SqlCommand(strCommandText, conn);
SqlCacheDependency dependency = new SqlCacheDependency(command);
// 註冊方法到委託,該委託是
CacheItemRemovedCallback nRemove = new CacheItemRemovedCallback(RemovedCallback);
// 新增或修改一條快取記錄
Cache.Insert(strCacheKey, objAppCache, dependency, absoluteExpiration, slidingExpiration, CacheItemPriority.Default, onRemove);
方法B:建立連線物件,再建立一個SqlCommand例項,最後建立SqlDependency例項。定義SqlDependency的委託OnChange,當資料發生改變時做出相應的處理(比如清除Cache)。
SqlConnection conn = new SqlConnection(strConnection);
SqlCommand command = new SqlCommand(strCommandText, conn);
SqlCacheDependency dependency = new SqlCacheDependency(command);
dependency.OnChange += new OnChangeEventHandler(Dependency_OnChange);
注意事項:
不知道是不是還存在BUG,我在專案開發中遇到一些奇怪的現象。同樣的程式碼,在有的機器上執行則能捕捉到變化,有的則完全沒反應;也有時會出現Cache剛建立就反覆發生依賴改變的事件。偶爾Cache還會資料發生變化卻不引發事件。
但從最終專案實施的情況看,似乎都只是某些機器環境造成的不確定因素?這個無法確定。不過起碼資料庫端是否正常啟用,可以通過SQL Server Profiler來檢視監視。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-594982/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server2005 實現資料庫快取依賴的實現步驟整理SQLServer資料庫快取
- SQL Server 2005實現資料庫快取依賴SQLServer資料庫快取
- Asp.net 資料庫快取依賴(SQLServer 2005)ASP.NET資料庫快取SQLServer
- 【JDBC的實現步驟……MySQL資料庫】JDBCMySql資料庫
- 快取依賴(檔案、資料庫)快取資料庫
- [VUE]computed屬性的資料響應和依賴快取實現過程Vue快取
- ASP.NET的快取依賴機制-SQL快取依賴篇ASP.NET快取SQL
- 資料快取的實現快取
- 在SQL Server 2005資料庫中實現自動備份SQLServer資料庫
- SQL Server資料庫的簡單實現方法SQLServer資料庫
- SQL Server資料庫實現負載均衡SQLServer資料庫負載
- [zt SQL Server2005複製功能實現與Oracle資料庫同步SQLServerOracle資料庫
- SQL Server連線VFP資料庫的實現 (轉)SQLServer資料庫
- SQL Server連線ACCESS資料庫的實現 (轉)SQLServer資料庫
- SQL如何實現查詢節點依賴SQL
- iOS實現依賴注入iOS依賴注入
- SQL Server 2005快速Web分頁的實現SQLServerWeb
- 在 SQL Server 2005 中使用表值函式來實現空間資料庫SQLServer函式資料庫
- 依賴注入?依賴注入是如何實現解耦的?依賴注入解耦
- JavaScript依賴注入的實現思路JavaScript依賴注入
- 分散式鎖的3種實現(資料庫、快取、Zookeeper)分散式資料庫快取
- SQL server資料庫with as子句與遞迴查詢的實現SQLServer資料庫遞迴
- PHP 依賴注入容器實現PHP依賴注入
- 依賴注入實現元件化依賴注入元件化
- MySQL資料庫複製操作的詳細實現步驟介紹MySql資料庫
- SQL Server 資料庫查詢死鎖的處理步驟SQLServer資料庫
- BADI的實現步驟
- 動手實現你的依賴注入依賴注入
- SQL Server 2005中的DDL觸發器的實現SQLServer觸發器
- sql server 2005資料庫快照SQLServer資料庫
- go語言依賴注入實現Go依賴注入
- 在SQL Server 2005中實現表的行列轉換SQLServer
- SpringBoot 整合 Quartz 實現依賴資料庫資料動態設定定時任務Spring Bootquartz資料庫
- SQL Server2005使用CTE實現遞迴QCSQLServer遞迴
- Laravel 中的依賴注入和 IoC 實現Laravel依賴注入
- 關於Golang中的依賴注入實現Golang依賴注入
- BAPI的簡單實現步驟API
- Sql Server 2005資料庫分割槽SQLServer資料庫