一,使資料庫支援SQL快取依賴性。
二,使表支援SQL快取依賴性。
三,在ASP.NET應用程式的web.config檔案中包含SQL連接字串。
四,以如下方式利用SQL快取依賴性:
1)在代碼中編程建立一個SqlCacheDependency對象。
2)給OutputCache指令添加SqlCacheDependency屬性。
3)通過Response.AddCacheDependency給Response對象添加一SqlCacheDependency執行個體。
開啟快取依賴性的參數簡要說明
-d <database> 用於SQL快取依賴性的資料庫名。資料庫可以使用連接字串和-c選項指定(必選)
-ed 允許資料庫啟用SQL快取依賴性。
-dd 禁止資料庫啟用SQL快取依賴性。
-et 允許表啟用SQL快取依賴性。需要-t選項。
-dt 禁止表啟用SQL快取依賴性。需要 -t 選項。
-t <table> 支援或禁止SQL快取依賴性的表名。需要 -et 或 -dt 選項。
-lt 列出所有啟用SQL快取依賴性的表。
在SQL Server 2000中使用快取禁用功能(在2005中也可以進行如下設定)
要在SQL 2000中使用快取禁用功能,必須執行如下兩步:
第一步是使相應的資料庫支援該功能。
第二步是使要使用的表支援該功能。
例:
aspnet_regsql -S localhost -U sa -P sa -d Northwind -ed
註:將本機上的Northwind資料庫開啟快取依賴功能。
aspnet_regsql -S localhost -U sa -P sa -d Northwind -dd
註:禁用本機上的Northwind資料庫的快取依賴功能。使用次命令後,資料庫中的所有表的快取禁用功能都自動關閉,AspNet_SqlCacheTablesForChangeNotification表也會自動刪除。
開啟表的快取依賴功能。
例:
aspnet_regsql -S localhost -U sa -P sa -d Northwind -t Products -et
註:為Northwind資料庫中的Products表開啟快取依賴功能。
aspnet_regsql -S localhost -U sa -P sa -d Northwind -t Products -dt
註:為 Northwind資料庫中的Products表關閉快取依賴功能。通過這個方法可以為一個資料庫中的一個或多個表開啟快取依賴功能。為資料庫和表開啟快取依賴功能後,可以發現Northwind資料庫中添加了一個 AspNet_SqlCacheTablesForChangeNotification表,表示配置成功了。
aspnet_regsql -S localhost -U sa -P sa -d Northwind -lt
使用-lt參數可以查看該資料庫中哪些表開啟了快取依賴功能。如果資料庫關閉了快取依賴或者沒有啟用快取依賴功能,使用此命令將會得到錯誤提示。
關於SQL 2005的快取禁用功能
SQL Server 2005支援快取的編程和聲明技術。在OupputCache指令中使用CommandNotification字串就可以給頁面建立基於通知的快取。可以編程指定SQL快取選項,或聲明該選項,但不能同時使用這兩種方法。SQL2005的緩衝依賴無需web.config的配置,也不用為資料庫和表開啟緩衝依賴功能,由於05內建了一個通知傳遞服務,該服務可以實現檢測資料的更改、實現更改通知傳遞等功能,因此不需要不斷輪詢資料庫來檢測資料更新了。
註:雖然05中的緩衝依賴使用很簡單,但目前我還沒有找到更多的相關資料,還沒有親自進行測試,主要原因還沒搞清楚怎麼才能開啟Broker服務,以後有時間在進行測試吧。
配置ASP.NET應用程式
使用資料庫和其中的幾個表支援SQL Server快取禁用功能後,就要為SQL Server快取禁用功能配置應用程式。
要配置應用程式,以使用SQL Server快取禁用功能,首先應修改web.config檔案。在此檔案中,指定要使用的資料庫,並讓ASP.NET串連它。
如:
<connectionStrings>
<add name="NorthwindConnectionString" connectionString="Data Source=.;Initial Catalog=Northwind;User ID=sa;Password=sa"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<caching>
<sqlCacheDependency enabled="true" pollTime="500">
<databases>
<clear/>
<add name="Northwind" connectionStringName ="NorthwindConnectionString" pollTime="500"/>
</databases>
</sqlCacheDependency>
</caching>
</system.web>
註:首先使用web.config檔案中的<connectionStrings>元素,建立了與資料庫的連接字串。然後通過<caching>元素為SQL Server快取功能進行配置。要是使用SQL Server快取依賴性,所以必須使用<sqlCacheDependency enabled="true">節點,並啟用該功能。在<databases>節點中引用資料庫。
<add>元素中的屬性說明:
name:為SQL Server資料庫提供一個標識符。
connectionStringName:指定串連的名稱。
pollTime:指定SQL Server輪流檢測的時間間隔,預設為5秒或500毫秒。SQL 2005通知功能不需要這個屬性。
web.config 檔案配置正確後,就可以在頁面上使用SQL Server快取禁用功能了。ASP.NET會把SQL Server請求放在AspNet_SqlCacheTablesForChangeNotification表的一個完全不同的線程上,看看 changeId號是否遞增了,如果該數字有變化,ASP.NET就知道對底層的SQL Server表進行了修改,應檢索一個新的結果集。它確定是否應進行SQL Server調用時,對AspNet_SqlCacheTablesForChangeNotification表的請求會得到一個結果,啟動了SQL Server快取禁用功能後,這些執行得非常快。
為頁面添加多個表,如下(用分號隔開):
<%@ OutputCache Duration="3600" VaryByParam="none" SqlDependency="Northwind:Employees;Northwind:Customers" %>