SQL Server でのクエリ通知

ADO.NET のダウンロード

クエリ通知は Service Broker インフラストラクチャに基づいて構築されており、データが変更されたときにクエリ通知を使用してアプリケーションに通知できます。 この機能は、Web アプリケーションなど、データベースから情報のキャッシュを提供し、ソース データが変更された場合に通知を必要とするアプリケーションに特に役立ちます。

ADO.NET を使用してクエリ通知を実装する方法には、次の 3 つがあります。

  • 低レベルの実装は、サーバー側の機能を公開する SqlNotificationRequest クラスによって提供されます。これにより、通知要求を使用してコマンドを実行できるようになります。

  • 高レベルの実装は、SqlDependency クラスによって行われます。このクラスでは、ソース アプリケーションと SQL Server 間の通知機能が高度に抽象化され、その依存関係を使用してサーバー内の変更を検出することができます。 ほとんどの場合、これはMicrosoft SqlClient Data Provider for SQL Serverを用いる管理クライアントアプリケーションによるSQL Server通知機能の最もシンプルかつ効果的な方法です。

  • さらに、ASP.NET 2.0 以降を使用して構築された Web アプリケーションでは、SqlCacheDependency ヘルパー クラスを使用できます。

クエリ通知は、基になるデータの変更に応じて表示またはキャッシュを更新する必要があるアプリケーションで使用されます。 Microsoft SQL Server では、最初に取得したものと異なる結果セットが同じコマンドで得られた場合には、.NET アプリケーションから SQL Server にコマンドを送信して通知を要求することができます。 サーバーで生成された通知は、キューを通じて送信された後に処理されます。

通知は、SELECT および EXECUTE ステートメントに対して設定できます。 EXECUTE ステートメントを使用している場合、SQL Server はその EXECUTE ステートメント自体ではなく、実行されるコマンドについて通知を登録します。 コマンドは、SELECT ステートメントの要件と制限を満たしている必要があります。 通知を登録するコマンドに複数のステートメントが含まれている場合、データベース エンジンによりバッチ内のステートメントごとに通知が作成されます。

データ変更時に、信頼できる即時の通知が必要なアプリケーションを開発している場合は、SQL Server オンライン ブックの「通知の計画」の「効率的なクエリ通知方法の計画」および「クエリ通知に代わる方法」を参照してください。 クエリ通知と SQL Server Service Broker の詳細については、SQL Server オンライン ブックのトピックへの次のリンクを参照してください。

SQL Server のドキュメント

このセクションでは

クエリ通知の有効化
クエリ通知を有効にするための要件を含め、クエリ通知の使用方法について説明します。

ASP.NET アプリケーションでの SqlDependency
ASP.NET アプリケーションからクエリ通知を使用する方法について説明します。

SqlDependency を使用した変更の検出
最初に取得された結果と異なるクエリ結果を検出する方法について説明します。

SqlNotificationRequest を使用した SqlCommand の実行
クエリ通知を使用する SqlCommand オブジェクトの構成例を示します。