SQL Server 中的查詢通知

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

Microsoft.Data.SqlClient 提供兩個查詢通知類別:

  • 使用 SqlNotificationRequest 執行含有通知要求的命令,並自行處理 Service Broker 訊息。

  • 用 SqlDependency 來透過 OnChange 事件偵測變更。 Microsoft.Data.SqlClient 管理監聽器,並在事件參數中揭露通知資訊。

Important

不要用 System.Data.SqlClient 來做新開發。 改用 Microsoft.Data.SqlClient。 ASP.NET Framework SqlCacheDependency 類別需要 System.Data.SqlClient,且不會與 Microsoft.Data.SqlClient 整合。 對於新的 Microsoft.Data.SqlClient 應用程式,請訂閱 SqlDependency.OnChange,並透過應用程式的快取 API 使條目失效。

查詢通知對於需要重新整理顯示或快取,以回應底層資料變更的應用程式很有用。 SQL Server 允許 .NET 應用程式發送指令並請求通知,若同一指令會產生與最初取得的結果集不同的結果集。 在伺服器所產生的通知會透過佇列傳送,以供稍後處理。

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

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

SQL Server 文件

本節內容

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

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

使用 SqlNotificationRequest 執行 SqlCommand 示範如何設定 SqlCommand 物件以進行查詢通知。

參考

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

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

SqlCacheDependency描述 System.Data.SqlClient 的 ASP.NET Framework 快取相依性類別。 它不會包覆 Microsoft.Data.SqlClient 依賴關係。

另請參閱