次の方法で共有


レッスン 1 : 基本のメッセージ交換オブジェクトの作成

このレッスンでは、データベースで、そのデータベース内でのメッセージ交換をサポート可能にするすべてのオブジェクトを構築する方法を学習します。

手順

Service Broker の有効化と AdventureWorks2008R2 データベースへの切り替え

  • 次のコードをコピーし、クエリ エディター ウィンドウに貼り付けます。次にこのコードを実行し、AdventureWorks2008R2 データベースで Service Broker を有効にして、このデータベースにコンテキストを切り替えます。

    USE master;
    GO
    ALTER DATABASE AdventureWorks2008R2
          SET ENABLE_BROKER;
    GO
    USE AdventureWorks2008R2;
    GO
    

メッセージ型の作成

  • 次のコードをコピーし、クエリ エディター ウィンドウに貼り付けます。次にこのコードを実行し、メッセージ交換のメッセージ型を作成します。Service Broker オブジェクトはデータベース エンジンの複数のインスタンスで参照されることが多いので、ほとんどの Service Broker オブジェクトには URI 形式の名前が与えられます。これにより、オブジェクトが複数のコンピューターで一意であることが保証されます。これら 2 つのメッセージ型は、メッセージが適切な形式の XML ドキュメントであることを Service Broker が検証することを指定しますが、特定のスキーマに対して XML を検証することは指定しません。

    CREATE MESSAGE TYPE
           [//AWDB/InternalAct/RequestMessage]
           VALIDATION = WELL_FORMED_XML;
    CREATE MESSAGE TYPE
           [//AWDB/InternalAct/ReplyMessage]
           VALIDATION = WELL_FORMED_XML;
    GO
    

コントラクトの作成

  • 次のコードをコピーし、クエリ エディター ウィンドウに貼り付けます。次にこのコードを実行し、メッセージ交換のコントラクトを作成します。コントラクトでは、このコントラクトを使用するメッセージ交換で、発信側から発信先には //AWDB/InternalAct/RequestMessage 型のメッセージを送信し、発信先から発信側には //AWDB/InternalAct/ReplyMessage 型のメッセージを送信する必要があることを指定します。

    CREATE CONTRACT [//AWDB/InternalAct/SampleContract]
          ([//AWDB/InternalAct/RequestMessage]
           SENT BY INITIATOR,
           [//AWDB/InternalAct/ReplyMessage]
           SENT BY TARGET
          );
    GO
    

発信先のキューおよびサービスの作成

  • 次のコードをコピーし、クエリ エディター ウィンドウに貼り付けます。次にこのコードを実行し、発信先で使用するキューおよびサービスを作成します。キューは同じデータベースからテーブルやビューと同じような方法で参照されるため、キュー名はテーブルやビューの名前と同じように書式設定されます。CREATE SERVICE ステートメントは、サービスを TargetQueueIntAct に関連付けます。したがって、サービスに送信されたすべてのメッセージは、TargetQueueIntAct で受信されます。また CREATE SERVICE は、既に作成した //AWDB/InternalAct/SampleContract を使用するメッセージ交換のみが、このサービスを発信先サービスとして使用できることを指定します。

    CREATE QUEUE TargetQueueIntAct;
    
    CREATE SERVICE
           [//AWDB/InternalAct/TargetService]
           ON QUEUE TargetQueueIntAct
              ([//AWDB/InternalAct/SampleContract]);
    GO
    

発信側のキューおよびサービスの作成

  • 次のコードをコピーし、クエリ エディター ウィンドウに貼り付けます。次にこのコードを実行し、発信側で使用するキューおよびサービスを作成します。コントラクト名を指定していないため、他のサービスがこのサービスを発信先サービスとして使用することはできません。

    CREATE QUEUE InitiatorQueueIntAct;
    
    CREATE SERVICE
           [//AWDB/InternalAct/InitiatorService]
           ON QUEUE InitiatorQueueIntAct;
    GO
    

次の手順

これで、//AWDB/InternalAct/InitiatorService//AWDB/InternalAct/TargetService の間のメッセージ交換をサポートするように AdventureWorks2008R2 を適切に構成できました。次に、発信先キューで内部アクティブ化をサポートするストアド プロシージャを作成します。「レッスン 2: 内部アクティブ化プロシージャの作成」を参照してください。