次の方法で共有


クエリ通知メッセージ

クエリ通知メッセージには XML が含まれます。各メッセージには、メッセージが作成された理由、および通知が作成されたときの通知メッセージが含まれています。

QueryNotification 要素の属性は、メッセージが出力された理由を特定しています。また、Message 要素には、サブスクリプションに対する通知 ID が含まれます。たとえば、次に示す XML ドキュメントは、1 つの完結したクエリ通知メッセージです。読みやすいように、フォーマットを編集してあります。

<qn:QueryNotification
  xmlns:qn="https://schemas.microsoft.com/SQL/Notifications/QueryNotification"
  Type="change" Source="data" Info="insert">
    <qn:Message>http://adventure-works.com/catalog.aspx?Category=Cars</qn:Message>
</qn:QueryNotification>

このクエリ通知メッセージは、INSERT ステートメントによってサブスクリプションのデータが変更されたことを、メッセージ (http://adventure-works.com/catalog.aspx?Category=Cars) 付きで報告しています。

ms189308.note(ja-jp,SQL.90).gifメモ :
通知は XML ドキュメントとして配信されます。そのため、XML ドキュメントで有効でない文字はデータベース エンジンによってエスケープされます。たとえば、サブスクリプションで送信されるメッセージに、文字 < が含まれている場合、返される XML ではこの文字がエスケープされ、&lt; となります。

各属性に対する値を次の表に示します。SQL Server では特定の組み合わせの属性だけが生成されます。たとえば、Type 属性の値 change に対しては、サブスクリプションが作成されている必要があるため、Type 属性の値 change は、Source 属性の値 statement と組み合わせられることはありません。

クエリ通知メッセージは 2 つの主要な種類に分類されます。この種類は、Type 属性の値によって区別されます。クエリの結果が変更されたことを示す場合、データベース エンジンによって、Type 属性が change であるメッセージが作成されます。サブスクリプション要求が失敗したことを示す場合、データベース エンジンによって、Type 属性が subscribe であるメッセージが作成されます。その他の 2 つの属性の値は、SQL Server によってメッセージが作成された理由を正確に示します。

メッセージの変更

クエリの結果に影響する可能性のある変更が加えられた場合、SQL Server によって、Type 属性が change のメッセージが生成されます。次の表では、change のメッセージについて説明します。

Source Info 説明

data

truncate

クエリで参照されている 1 つ以上のテーブルが切り捨てられました。

data

insert

SQL Server によって、クエリで参照されている 1 つ以上のテーブルに対して INSERT ステートメントが処理されました。

data

update

SQL Server によって、クエリで参照されている 1 つ以上のテーブルに対して UPDATE ステートメントが処理されました。

data

delete

SQL Server によって、クエリで参照されている 1 つ以上のテーブルに対して DELETE ステートメントが処理されました。

timeout

none

サブスクリプションのタイムアウトが発生しました。

object

drop

クエリによって使用されている、基になるオブジェクトの 1 つが削除されました。

object

alter

クエリによって使用されている、基になるオブジェクトの 1 つが変更されました。

system

restart

SQL Server が起動しました。

system

error

SQL Server で内部エラーが発生しました。

system

resource

通知サブスクリプションは、サーバーの負荷が高いなど、SQL Server 状態が原因で削除されました。

メッセージのサブスクライブ

SQL Server でサブスクリプションを作成できない場合、サーバーによって直ちに Type 属性が subscribe のメッセージが生成されます。次の表では、subscribe のメッセージについて説明します。

Source Info 説明

statement

query

送信されたコマンドに、クエリ通知の要件を満たしていない SELECT ステートメントが含まれていました。

statement

invalid

送信されたコマンドに、通知をサポートしないステートメント (INSERT や UPDATE など) が含まれていました。

statement

previous invalid

同一トランザクションの前のコマンドに、通知をサポートしないステートメント (INSERT や UPDATE など) が含まれていました。

statement

set options

コマンドが送信されたときに、接続オプションが正しく設定されていませんでした。

statement

isolation

分離レベルが、クエリ通知に対して有効ではありませんでした (SNAPSHOT 分離レベル)。

statement

query template limit

クエリ内で指定されたテーブルが内部テンプレート数の最大値に達しました。

参照

その他の技術情報

XML スキーマの使用方法

ヘルプおよび情報

SQL Server 2005 の参考資料の入手