レッスン 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 : 要求の受信と応答の送信」を参照してください。