レッスン 4 : メッセージ交換の開始

このレッスンでは、データベース エンジンの 2 つのインスタンスにまたがるメッセージ交換を開始し、発信側インスタンスから発信先インスタンスに要求メッセージを送信する方法を学習します。これらの手順は、発信側インスタンスと同じコンピュータで実行されている Management Studio のコピーから実行してください。

手順

InitiatorDB データベースへの切り替え

  • 次のコードをコピーし、クエリ エディタ ウィンドウに貼り付けます。次にこのコードを実行し、メッセージ交換を開始する InstInitiatorDB データベースにコンテキストを切り替えます。

    USE InstInitiatorDB;
    GO
    

メッセージ交換の開始と要求メッセージの送信

  • 次のコードをコピーし、クエリ エディタ ウィンドウに貼り付けます。次にこのコードを実行し、メッセージ交換を開始して、InstTargetDB 内の //TgtDB/2InstSample/TargetService に要求メッセージを送信します。BEGIN DIALOG から SEND ステートメントにダイアログ ハンドルを渡すために変数を使用するため、このコードは 1 つのブロック内で実行する必要があります。このバッチは、BEGIN DIALOG ステートメントを実行してメッセージ交換を開始し、要求メッセージを作成します。次に、SEND ステートメントでダイアログ ハンドルを使用して、そのメッセージ交換で要求メッセージを送信します。最後の SELECT ステートメントは、送信されたメッセージのテキストを単純に表示します。

    DECLARE @InitDlgHandle UNIQUEIDENTIFIER;
    DECLARE @RequestMsg NVARCHAR(100);
    
    BEGIN TRANSACTION;
    
    BEGIN DIALOG @InitDlgHandle
         FROM SERVICE [//InstDB/2InstSample/InitiatorService]
         TO SERVICE N'//TgtDB/2InstSample/TargetService'
         ON CONTRACT [//BothDB/2InstSample/SimpleContract]
         WITH
             ENCRYPTION = ON;
    
    SELECT @RequestMsg = N'<RequestMsg>Message for Target service.</RequestMsg>';
    
    SEND ON CONVERSATION @InitDlgHandle
         MESSAGE TYPE [//BothDB/2InstSample/RequestMessage]
         (@RequestMsg);
    
    SELECT @RequestMsg AS SentRequestMsg;
    
    COMMIT TRANSACTION;
    GO
    

次の手順

ここでは、メッセージ交換を開始し、発信先サービスに要求メッセージを送信しました。次に、発信先キューから要求メッセージを受信し、発信側サービスに応答メッセージを送信します。「レッスン 5 : 要求の受信と応答の送信」を参照してください。