解析SQL Server 2005實現數據庫緩存依賴_Mssql數據庫教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:為何把你的數據庫置于版本控制之下
      做程序開發的人都知道版本控制的重要性, 代碼的管理好說,TFS/SVN/VSS/CVS,哪個都能用。但涉及到數據庫的版本控制,就不是太好做的。有的team是定期把數據庫的備份放到服務器上,但一來數據庫備份太大,而來二進制的備份文件沒有簡單的diff工具來比較變化。

      使用方法和步驟如下:

      step1

      檢測是否已經啟用ServiceBroker,檢測方法:

      SelectDATABASEpRoPERTYEX('數據庫名稱','IsBrokerEnabled')

      --1表示已經啟用0表示沒有啟用

      step2

      如果ServiceBroker沒有啟用,使用下面語句啟用:

      ALTERDATABASE數據庫名稱SETENABLE_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項。

      SqlConnectionconn=newSqlConnection(strConnection);SqlCommandcommand=newSqlCommand(strCommandText,conn);

      SqlCacheDependencydependency=newSqlCacheDependency(command);

      //注冊方法到委托,該委托是

      CacheItemRemovedCallbackonRemove=newCacheItemRemovedCallback(RemovedCallback);

      //新增或修改一條緩存記錄

      Cache.Insert(strCacheKey,objAppCache,dependency,absoluteExpiration,slidingExpiration,CacheItemPriority.Default,onRemove);

      方法B:建立連接對象,再創建一個SqlCommand實例,最后創建SqlDependency實例。定義SqlDependency的委托OnChange,當數據發生改變時做出相應的處理(比如清除Cache)。

      SqlConnectionconn=newSqlConnection(strConnection);SqlCommandcommand=newSqlCommand(strCommandText,conn);

      SqlCacheDependencydependency=newSqlCacheDependency(command);

      dependency.OnChange =newOnChangeEventHandler(Dependency_OnChange);

      注意事項:

      不知道是不是還存在BUG,我在項目開發中遇到一些奇怪的現象。同樣的代碼,在有的機器上運行則能捕捉到變化,有的則完全沒反應;也有時會出現Cache剛建立就反復發生依賴改變的事件。偶爾Cache還會數據發生變化卻不引發事件。

      但從最終項目實施的情況看,似乎都只是某些機器環境造成的不確定因素?這個無法確定。不過起碼數據庫端是否正常啟用,可以通過SQLServerProfiler來查看監視。

      分享:詳解SQL Server數據體系和應用程序邏輯
      在許多用SQL Server實現的新的企業系統設計中,系統設計師需要在給數據結構和管理應用程序邏輯的定位上做出具有關鍵性意義的決定。SQL Server有它自己的編程語言(Transact-SQL,即TSQL),開發者可以用它來管理數據訪問、代碼事務邏輯和交易控制。 使用TSQL,

      來源:模板無憂//所屬分類:Mssql數據庫教程/更新時間:2009-08-27
      相關Mssql數據庫教程