クエリ通知の使用

SQL Server 2005 からクエリ通知が導入されました。これは、クエリの結果が変化したときに、SQL Server から通知されるようにアプリケーションが要求できる新機能です。プログラマはクエリ通知を使用して、以前に取得した情報に変化があったときにのみ、データベースのクエリを実行するアプリケーションを設計できます。

たとえば、オンライン カタログ アプリケーションで販売中の品目を一覧するクエリの結果をキャッシュするとします。アプリケーションでは、キャッシュしたデータに基づいたカタログが表示されます。販売品目の一覧が変化すると、アプリケーションのイベント ハンドラが通知イベントを受信し、キャッシュしていたデータを破棄します。次回にユーザーが販売品目の一覧を要求したとき、アプリケーションからデータベースに現在のデータに対するクエリが実行され、通知サブスクリプションが更新されます。

アプリケーションではクエリ通知を使用して、データベースとのやり取りを削減できます。開発者は、現在の結果をメンテナンスするためにクエリを定期的に再実行するコードを記述するのではなく、クエリ結果が古くなった場合に自動的に通知を受け取るアプリケーションを設計できます。アプリケーションでは、クエリ通知を使用して、クエリと通知要求が含まれるコマンドを実行します。アプリケーションは、クエリの結果またはクエリの結果から生成される動的コンテンツをキャッシュします。アプリケーションでは、クエリ通知を受信すると、キャッシュしているコンテンツを消去します。その後、更新されたクエリ結果が必要になったときに、クエリと通知要求を再実行します。

データベース エンジンでは、クエリ通知の要求を追跡するために通知サブスクリプションが使用されます。コマンドに通知要求が含まれていると、データベースでその要求が通知サブスクリプションとして登録され、コマンドが実行されます。

データベース エンジンでは、通知メッセージを配信するために Service Broker が使用されます。したがって、アプリケーションからサブスクリプションが要求されるデータベースでは、Service Broker がアクティブになっている必要があります。クエリ通知機能では、Notification Services は不要で使用されません。クエリ通知はイベント通知とは別のものです。

サブスクリプションを含むデータベース以外のデータベースの通知メッセージを受信するには、サブスクリプションを含むデータベースの TRUSTWORTHY プロパティが ON に設定されている必要があります。詳細については、「ALTER DATABASE (Transact-SQL)」を参照してください。