SQL Server 中的查詢通知

查詢通知是根據 Service Broker 基礎結構而建置,可讓應用程式在資料變更時收到通知。 此功能對於從資料庫中提供資訊快取的應用程式 (如 Web 應用程式),及需要在來源資料變更時收到通知的應用程式來說非常有用。

有三種方式可以使用 ADO.NET 來實作查詢通知:

  1. 低階實作會由公開伺服器端功能的 SqlNotificationRequest 類別所提供,可讓您利用通知要求來執行命令。

  2. 高階實作會由 SqlDependency 類別所提供,此類別可提供在來源應用程式與 SQL Server 之間通知功能的高階抽象概念,讓您可以使用相依性來偵測伺服器中的變更。 在多數情況下,對於使用 .NET Framework Data Provider for SQL Server 的 Managed 用戶端應用程式而言,這是利用 SQL Server 通知功能最簡單且最有效的方式。

  3. 此外,使用 ASP.NET 2.0 或更新版本建置的 Web 應用程式可以使用 SqlCacheDependency Helper 類別。

查詢通知對於需要重新整理顯示或快取,以回應底層資料變更的應用程式很有用。 Microsoft SQL Server 可讓 .NET Framework 應用程式傳送命令至 SQL Server,並要求當執行相同命令而產生與最初擷取的不同結果集時,就產生通知。 在伺服器所產生的通知會透過佇列傳送,以供稍後處理。

您可以為 SELECT 和 EXECUTE 陳述式設定通知。 使用 EXECUTE 陳述式時,SQL Server 會為執行的命令註冊通知,而非為 EXECUTE 陳述式本身。 此命令必須符合 SELECT 陳述式的需求和限制。 當註冊通知的命令包含多個陳述式時,資料庫引擎會為批次中的每個陳述式建立一個通知。

如果您開發的應用程式資料在變更時需要可靠的次秒通知,請查看在規劃通知高效規劃查詢通知策略查詢通知替代方案的文章。 如需查詢通知和 SQL Server Service Broker 的詳細資訊,請參閱下列 《SQL Server 線上叢書》 主題的連結。

SQL Server 文件

本節內容

啟用查詢通知
討論如何使用查詢通知,包括其啟用及使用需求。

ASP.NET 應用程式中的 SqlDependency
示範如何使用 ASP.NET 應用程式的查詢通知。

使用 SqlDependency 偵測變更
示範如何偵測查詢結果何時將會與原始接收的結果不同。

使用 SqlNotificationRequest 執行 SqlCommand
示範如何設定 SqlCommand 物件來處理查詢通知。

參考

SqlNotificationRequest
描述 SqlNotificationRequest 類別與其所有成員。

SqlDependency
描述 SqlDependency 類別與其所有成員。

SqlCacheDependency
描述 SqlCacheDependency 類別與其所有成員。

另請參閱