SQL Server のクエリ通知
クエリ通知は Service Broker インフラストラクチャに基づいて構築されており、データが変更されたときにクエリ通知を使用してアプリケーションに通知できます。 この機能は、Web アプリケーションなど、データベースから情報のキャッシュを提供し、ソース データが変更された場合に通知を必要とするアプリケーションに特に役立ちます。
ADO.NET を使用してクエリ通知を実装する方法には、次の 3 つがあります。
低レベルの実装は、サーバー側の機能を公開する
SqlNotificationRequest
クラスによって提供されます。これにより、通知要求を使用してコマンドを実行できるようになります。高レベルの実装は、
SqlDependency
クラスによって行われます。このクラスでは、ソース アプリケーションと SQL Server 間の通知機能が高度に抽象化され、その依存関係を使用してサーバー内の変更を検出することができます。 マネージド クライアント アプリケーションが .NET Framework Data Provider for SQL Server を使用して SQL Server の通知機能を活用するには、ほとんどの場合、これが最も簡単かつ効果的な方法です。さらに、ASP.NET 2.0 以降を使用して構築された Web アプリケーションでは、
SqlCacheDependency
ヘルパー クラスを使用できます。
クエリ通知は、基になるデータの変更に応じて表示またはキャッシュを更新する必要があるアプリケーションで使用されます。 Microsoft SQL Server では、最初に取得したものと異なる結果セットが同じコマンドで得られた場合には、.NET Framework アプリケーションから SQL Server にコマンドを送信して通知を要求することができます。 サーバーで生成された通知は、キューを通じて送信された後に処理されます。
通知は、SELECT および EXECUTE ステートメントに対して設定できます。 EXECUTE ステートメントを使用している場合、SQL Server はその EXECUTE ステートメント自体ではなく、実行されるコマンドについて通知を登録します。 コマンドは、SELECT ステートメントの要件と制限を満たしている必要があります。 通知を登録するコマンドに複数のステートメントが含まれている場合、データベース エンジンによりバッチ内のステートメントごとに通知が作成されます。
データ変更時に、信頼できる即時の通知が必要なアプリケーションを開発している場合は、「通知の計画」記事の「効率的なクエリ通知方法の計画」および「クエリ通知に代わる方法」を参照してください。 クエリ通知と SQL Server Service Broker の詳細については、SQL Server ドキュメントの記事への以下のリンクを参照してください。
SQL Server のドキュメント
このセクションの内容
クエリ通知の有効化: クエリ通知を使用する方法と、クエリ通知を有効にして使用するための要件について説明します。
SqlDependency を使用した変更の検出: クエリの結果が、最初に受け取ったものと異なるタイミングを検出する方法を示します。
SqlCommand の実行と SqlNotificationRequest: クエリ通知と連携するように SqlCommand オブジェクトを構成する方法を示します。
リファレンス
SqlNotificationRequest: SqlNotificationRequest クラスおよびそのすべてのメンバーについて説明します。
SqlDependency: SqlDependency クラスおよびそのすべてのメンバーについて説明します。
SqlCacheDependency: SqlCacheDependency クラスおよびそのすべてのメンバーについて説明します。