SQL Server2005 實現資料庫快取依賴的實現步驟整理
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-594322/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【JDBC的實現步驟……MySQL資料庫】JDBCMySql資料庫
- SQL如何實現查詢節點依賴SQL
- SQL Server2005使用CTE實現遞迴QCSQLServer遞迴
- 分散式鎖的3種實現(資料庫、快取、Zookeeper)分散式資料庫快取
- 依賴注入?依賴注入是如何實現解耦的?依賴注入解耦
- PHP 依賴注入容器實現PHP依賴注入
- 依賴注入實現元件化依賴注入元件化
- go語言依賴注入實現Go依賴注入
- 關於Golang中的依賴注入實現Golang依賴注入
- Laravel 中的依賴注入和 IoC 實現Laravel依賴注入
- 用trait實現簡單的依賴注入AI依賴注入
- DIY 實現 ThinkPHP 核心框架 (十四)利用反射實現依賴注入PHP框架反射依賴注入
- JavaEE依賴注入CDI的開源實現: WeldJava依賴注入
- 利用反射機制實現依賴注入的原理反射依賴注入
- smartbi電子表格的實現步驟
- 5個步驟實現有效的DevSecOpsdev
- 使用RxJava實現快取RxJava快取
- 使用ConcurrentHashMap實現快取HashMap快取
- SpringBoot2 基礎案例(08):整合Redis資料庫,實現快取管理Spring BootRedis資料庫快取
- ASP.NET WebApi + Autofac 實現依賴注入ASP.NETWebAPI依賴注入
- Go中使用Google Wire實現依賴注入Go依賴注入
- Minya 分層框架實現的思考(二):構建依賴及資料傳輸框架
- 如何發現Python依賴庫漏洞Python
- CDN加速實現方式步驟——VecloudCloud
- springboot bean的迴圈依賴實現 原始碼分析Spring BootBean原始碼
- 直播間原始碼,透過Redis實現資料快取原始碼Redis快取
- 動態連結的步驟與實現
- UAVStack的慢SQL資料庫監控功能及其實現SQL資料庫
- SQL server資料庫with as子句與遞迴查詢的實現SQLServer資料庫遞迴
- SpringBoot快取管理(二) 整合Redis快取實現Spring Boot快取Redis
- 快取 LRU 和 LFU 實現快取
- CefSharp自定義快取實現快取
- 實現AVPlayer離線快取快取
- 200行Java程式碼實現依賴注入框架Java依賴注入框架
- 資料庫設計中的6個最佳實踐步驟資料庫
- phpExcel實現Excel資料的匯入匯出(全步驟詳細解析)PHPExcel
- 200 行程式碼實現一個高效快取庫行程快取
- Spring學習:簡單實現一個依賴注入和迴圈依賴的解決Spring依賴注入
- 使用Java加密與解密實現步驟Java加密解密