ブローカ メッセージ

アプリケーション間のほとんどの通信は、メッセージ型オブジェクトとして定義されるアプリケーション固有のメッセージによって処理されます。それに加えて、Service Broker では、アプリケーション固有のデータではなく、Service Broker からの情報を格納した、3 種類のメッセージを提供します。すべてのアプリケーションは、エラー メッセージと終了ダイアログ メッセージを処理するロジックを格納している必要があります。アプリケーションでダイアログ メッセージ交換にメッセージ交換タイマを設定する場合には、そのアプリケーションはダイアログ タイマ メッセージを処理するロジックを格納している必要があります。Service Broker は、これらのメッセージ型を、サービスのコントラクトに表示されているかどうかにかかわらず、すべてのサービスに提供します。

ダイアログ タイマ メッセージ

ダイアログ タイマ メッセージは、ダイアログのメッセージ交換タイマの有効期限が切れたことを示します。このメッセージのメッセージ型は、https://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer です。メッセージ交換タイマは、メッセージ交換の一方の側に固有です。Service Broker は、メッセージ交換の相手側にダイアログ タイマ メッセージを送信することはありません。

ダイアログ タイマ メッセージは、空のメッセージです。受信操作では、タイムアウト メッセージがキューに到着した順序には関係なく、そのダイアログに関するどのメッセージよりも先に、ダイアログ タイマ メッセージを受信します。

エラー メッセージ

リモート サービスがダイアログをエラーで終了した場合、またはローカル ブローカがダイアログ内で復旧できないエラーを検出した場合、ローカル ブローカはエラー メッセージを生成します。エラー メッセージのメッセージ型は、https://schemas.microsoft.com/SQL/ServiceBroker/Error です。エラー メッセージは、適切な形式の XML として検証されます。

エラー メッセージに格納された XML ドキュメントは、名前空間 https://schemas.microsoft.com/SQL/ServiceBroker を使用します。ドキュメントのルート要素は、ローカル名が Error で、Code という要素と、Message という要素を含んでいます。Code 要素は、整数値を保持します。Message 要素は、メッセージの、人間が読むことのできるテキストを保持します。

たとえば、支出レポートを処理するサービスが生成したエラー メッセージには、たとえば次のような XML が含まれています (読みやすくするために再度書式設定してあります)。

<?xml version="1.0"?>
<Error xmlns="https://schemas.microsoft.com/SQL/ServiceBroker">
  <Code>12</Code>
  <Description>
    Unknown cost center "127-1000". Please check the cost center list
    and resubmit the report.
  </Description>
</Error>

受信操作では、エラー メッセージがキューに到着した順序には関係なく、そのダイアログに関する、ダイアログ タイマ メッセージ以外のどのメッセージよりも先に、エラー メッセージを受信します。キューにダイアログ タイマ メッセージとエラー メッセージの両方が入っていた場合、受信操作ではエラー メッセージよりも先にダイアログ タイマ メッセージを受信します。

ダイアログに関するエラー メッセージが到着すると、ブローカは、アプリケーションがそのダイアログでメッセージの送信を試行した際に、エラーを生成します。ただし、エラー メッセージが受信された後でも、アプリケーションはそのダイアログに関する残りのメッセージを受信できます。

終了ダイアログ メッセージ

アプリケーションがエラーを指定せずにダイアログを終了すると、ローカル ブローカはリモート ブローカに終了ダイアログ メッセージを送信します。終了ダイアログ メッセージのメッセージ型は、https://schemas.microsoft.com/SQL/ServiceBroker/EndDialog です。

終了ダイアログ メッセージは、空のメッセージです。受信操作では、終了ダイアログ メッセージを、メッセージがキューに到着した順序で受信します。

参照

処理手順

Service Broker エラー メッセージから情報を取得する方法 (Transact SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手