SQL Server のクエリ通知 (ADO.NET)
クエリ通知は、Microsoft SQL Server 2005、および ADO.NET 2.0 の System.Data.SqlClient 名前空間に導入されました。クエリ通知は 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 ステートメント自体ではなく、EXECUTE ステートメントで実行されたコマンドに対する通知が登録されます。コマンドは、SELECT ステートメントの要件と制限を満たしている必要があります。通知を登録するコマンドに複数のステートメントが含まれている場合、データベース エンジンによりバッチ内のステートメントごとに通知が作成されます。
クエリ通知と SQL Server Service Broker の詳細については、次の SQL Server オンライン ブックのトピックへのリンクを参照してください。
SQL Server 2005 オンライン ブック |
SQL Server 2008 オンライン ブック |
---|---|
このセクションの内容
クエリ通知の有効化 (ADO.NET)
クエリ通知を有効にするための要件を含め、クエリ通知の使用方法について説明します。ASP.NET アプリケーションでの SqlDependency (ADO.NET)
ASP.NET アプリケーションからクエリ通知を使用する方法について説明します。SqlDependency を使用した変更の検出 (ADO.NET)
最初に取得された結果と異なるクエリ結果を検出する方法について説明します。SqlCommand の実行と SqlNotificationRequest (ADO.NET)
クエリ通知を使用する SqlCommand オブジェクトの構成例を示します。
参照
SqlNotificationRequest
SqlNotificationRequest クラスおよびそのすべてのメンバーについて説明します。SqlDependency
SqlDependency クラスおよびそのすべてのメンバーについて説明します。SqlCacheDependency
SqlCacheDependency クラスおよびそのすべてのメンバーについて説明します。