レッスン 4 : メッセージ交換の開始
新規 : 2007 年 9 月 15 日
このレッスンでは、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 : 要求の受信と応答の送信」を参照してください。
参照
その他の技術情報
BEGIN DIALOG CONVERSATION (Transact-SQL)
SEND (Transact-SQL)
Service Broker のプログラミングの基礎