SQL Server のクエリ通知Query Notifications in SQL Server

クエリ通知は Service Broker インフラストラクチャに基づいて構築されており、データが変更されたときにクエリ通知を使用してアプリケーションに通知できます。Built upon the Service Broker infrastructure, query notifications allow applications to be notified when data has changed. Web アプリケーションのように、データベースからの情報のキャッシュを用意し、データベースのデータが変更されたときに通知する必要があるアプリケーションでは、この機能が特に有用です。This feature is particularly useful for applications that provide a cache of information from a database, such as a Web application, and need to be notified when the source data is changed.

ADO.NET を使用してクエリ通知機能を実装する方法は 3 つあります。There are three ways you can implement query notifications using ADO.NET:

  1. 基本レベルの実装は、SqlNotificationRequest クラスによって行われます。これによってサーバー側の機能が公開され、通知要求を伴うコマンドを実行できます。The low-level implementation is provided by the SqlNotificationRequest class that exposes server-side functionality, enabling you to execute a command with a notification request.

  2. 高レベルの実装は、SqlDependency クラスによって行われます。このクラスでは、ソース アプリケーションと SQL Server 間の通知機能が高度に抽象化され、その依存関係を使用してサーバー内の変更を検出することができます。The high-level implementation is provided by the SqlDependency class, which is a class that provides a high-level abstraction of notification functionality between the source application and SQL Server, enabling you to use a dependency to detect changes in the server. マネージド クライアント アプリケーションが .NET Framework Data Provider for SQL Server を使用して SQL Server の通知機能を活用するには、ほとんどの場合、これが最も簡単かつ効果的な方法です。In most cases, this is the simplest and most effective way to leverage SQL Server notifications capability by managed client applications using the .NET Framework Data Provider for SQL Server.

  3. さらに、ASP.NET 2.0 以降を使用して構築された Web アプリケーションでは、SqlCacheDependency ヘルパー クラスを使用できます。In addition, Web applications built using ASP.NET 2.0 or later can use the SqlCacheDependency helper classes.

クエリ通知は、基になるデータの変更に応じて表示またはキャッシュを更新する必要があるアプリケーションで使用されます。Query notifications are used for applications that need to refresh displays or caches in response to changes in underlying data. Microsoft SQL Server では、最初に取得したものと異なる結果セットが同じコマンドで得られた場合には、.NET Framework アプリケーションから SQL Server にコマンドを送信して通知を要求することができます。Microsoft SQL Server allows .NET Framework applications to send a command to SQL Server and request notification if executing the same command would produce result sets different from those initially retrieved. サーバーで生成された通知は、キューを通じて送信された後に処理されます。Notifications generated at the server are sent through queues to be processed later.

通知は SELECT ステートメントおよび EXECUTE ステートメントに対して設定できます。You can set up notifications for SELECT and EXECUTE statements. EXECUTE ステートメントを使用した場合、SQL Server では、EXECUTE ステートメント自体ではなく、EXECUTE ステートメントで実行されたコマンドに対する通知が登録されます。When using an EXECUTE statement, SQL Server registers a notification for the command executed rather than the EXECUTE statement itself. コマンドは、SELECT ステートメントの要件と制限を満たしている必要があります。The command must meet the requirements and limitations for a SELECT statement. 通知を登録するコマンドに複数のステートメントが含まれている場合、データベース エンジンによりバッチ内のステートメントごとに通知が作成されます。When a command that registers a notification contains more than one statement, the Database Engine creates a notification for each statement in the batch.

データの変更時に信頼できるサブ秒通知が必要なアプリケーションを開発している場合は、SQL Server オンライン ブックの「通知の計画」トピックの「効率的なクエリ通知方法の計画」セクションと「クエリ通知に代わる方法」セクションを参照してください。If you are developing an application where you need reliable sub-second notifications when data changes, review the sections Planning an Efficient Query Notifications Strategy and Alternatives to Query Notifications in the Planning for Notifications topic in SQL Server Books Online. クエリ通知と SQL Server Service Broker の詳細については、次の SQL Server オンライン ブックのトピックへのリンクを参照してください。For more information about Query Notifications and SQL Server Service Broker, see the following links to topics in SQL Server Books Online.

SQL Server のドキュメントSQL Server documentation

このセクションの内容In This Section

クエリ通知の有効化Enabling Query Notifications
クエリ通知を有効にするための要件を含め、クエリ通知の使用方法について説明します。Discusses how to use query notifications, including the requirements for enabling and using them.

ASP.NET アプリケーションでの SqlDependencySqlDependency in an ASP.NET Application
ASP.NET アプリケーションからクエリ通知を使用する方法について説明します。Demonstrates how to use query notifications from an ASP.NET application.

SqlDependency を使用した変更の検出Detecting Changes with SqlDependency
最初に取得された結果と異なるクエリ結果を検出する方法について説明します。Demonstrates how to detect when query results will be different from those originally received.

SqlCommand の実行と SqlNotificationRequestSqlCommand Execution with a SqlNotificationRequest
クエリ通知を使用する SqlCommand オブジェクトの構成例を示します。Demonstrates configuring a SqlCommand object to work with a query notification.

参照Reference

SqlNotificationRequest
SqlNotificationRequest クラスおよびそのすべてのメンバーについて説明します。Describes the SqlNotificationRequest class and all of its members.

SqlDependency
SqlDependency クラスおよびそのすべてのメンバーについて説明します。Describes the SqlDependency class and all of its members.

SqlCacheDependency
SqlCacheDependency クラスおよびそのすべてのメンバーについて説明します。Describes the SqlCacheDependency class and all of its members.

関連項目See also