クエリ通知は Service Broker インフラストラクチャに基づいて構築されており、データが変更されたときにクエリ通知を使用してアプリケーションに通知できます。 この機能は、Web アプリケーションなど、データベースから情報のキャッシュを提供し、ソース データが変更された場合に通知を必要とするアプリケーションに特に役立ちます。
Microsoft.Data.SqlClient には、クエリの通知を行うための 2 つのクラスが用意されています:
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 クラスおよびそのすべてのメンバーについて説明します。
SqlCacheDependencySystem.Data.SqlClient の ASP.NET Framework キャッシュ依存関係クラスについて説明します。 Microsoft.Data.SqlClient の依存関係をラップしません。