日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

转 .NET 2.0 SqlDependency快速上手指南

發(fā)布時間:2023/12/31 asp.net 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转 .NET 2.0 SqlDependency快速上手指南 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

此文以SQL Server 2005上實(shí)現(xiàn)為準(zhǔn),SQL Server 2000因?yàn)閷?shí)現(xiàn)機(jī)制不同,請查閱相關(guān)資料。

?????? 步驟一:在SQL Server 2005上執(zhí)行ALTER DATABASE <DatabaseName> SET ENABLE_BROKER;語句讓相應(yīng)的數(shù)據(jù)庫啟用監(jiān)聽服務(wù),以便支持SqlDependency特性。

?????? 這條語句最好在數(shù)據(jù)庫未執(zhí)行任何事務(wù)的情況下執(zhí)行。

?????? 步驟二:調(diào)用SqlDependency.Start(String strConnectionString)方法,在應(yīng)用程序端啟用依賴監(jiān)聽器。

?????? 該方法的參數(shù)為一個數(shù)據(jù)庫的連接字符串,該數(shù)據(jù)庫必須已經(jīng)執(zhí)行過步驟一的操作。

?????? 對于同一連接字符串,若已經(jīng)執(zhí)行過該語句,再次執(zhí)行不會發(fā)生任何異常,但返回值會為False.

?????? 如果是在Web程序中使用,建議可以將該語句放在Application_Start事件中執(zhí)行。

?????? 監(jiān)聽是基于數(shù)據(jù)庫的,而依賴才可以基于表或者查詢。

?????? 步驟三:該步驟分別有兩種不同的做法。該階段必須注意步驟。

?????? ?????? 方法A:建立連接對象,再創(chuàng)建一個SqlCommand實(shí)例,創(chuàng)建SqlCacheDependency實(shí)例,在這步之后再調(diào)用Command對象來獲取數(shù)據(jù)(這個順序很重要)。之后調(diào)用CacheInsert語句建立一個依賴于一個具體查詢數(shù)據(jù)集的Cache項(xiàng)。


?????????????SqlConnection conn = new SqlConnection(strConnection);

???????? SqlCommand command = new SqlCommand(strCommandText, conn);

???????? SqlCacheDependency dependency = new SqlCacheDependency(command);

????????

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

???????? CacheItemRemovedCallback onRemove = new CacheItemRemovedCallback(RemovedCallback);

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

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

???? ???? 方法B:建立連接對象,再創(chuàng)建一個SqlCommand實(shí)例,最后創(chuàng)建SqlDependency實(shí)例。定義SqlDependency的委托OnChange,當(dāng)數(shù)據(jù)發(fā)生改變時做出相應(yīng)的處理(比如清除Cache)。

????????????? SqlConnection conn = new SqlConnection(strConnection);

???????? SqlCommand command = new SqlCommand(strCommandText, conn);

???????? SqlCacheDependency dependency = new SqlCacheDependency(command);

????????????? dependency.OnChange += new OnChangeEventHandler(Dependency_OnChange);

???? 注意事項(xiàng):

strCommandText參數(shù)關(guān)聯(lián)的 SQL 語句必須包括以下內(nèi)容:

  • 完全限定的表名,包括表所有者的名稱。

    例如,要引用由數(shù)據(jù)庫所有者擁有的名為 "customers" 的表,SQL 語句必須引用 "dbo.customers"。

  • 在 Select 語句中顯式指定列名。不能使用星號 (*) 通配符來選擇表中的所有列。

    例如,不能使用 "select * from customers",而必須使用 "select name, address, city, state from dbo.customers"。

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

?????? 但從最終項(xiàng)目實(shí)施的情況看,似乎都只是某些機(jī)器環(huán)境造成的不確定因素?這個無法確定。不過起碼數(shù)據(jù)庫端是否正常啟用,可以通過SQL Server Profiler來查看監(jiān)視。

轉(zhuǎn)載于:https://www.cnblogs.com/greateast/archive/2008/02/14/1068974.html

總結(jié)

以上是生活随笔為你收集整理的转 .NET 2.0 SqlDependency快速上手指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。