次の方法で共有


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

新規 : 2007 年 9 月 15 日

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

手順

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

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

    USE InstInitiatorDB;
    GO
    

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

  1. クエリ エディタ ウィンドウに、次のコードをコピーして貼り付けます。次に、コードを実行してメッセージ交換を開始し、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 : 要求の受信と応答の送信」を参照してください。

参照

その他の技術情報

BEGIN DIALOG CONVERSATION (Transact-SQL)
SEND (Transact-SQL)
Service Broker のプログラミングの基礎

ヘルプおよび情報

SQL Server 2005 の参考資料の入手