第 4 課:開始交談

適用于:SQL Server (所有支援的版本) Azure SQL 受控執行個體

在這一課,您將瞭解如何開始跨越兩個 Database Engine 實例的對話,並將要求訊息從啟動器實例傳送至目標實例。 從與啟動器實例相同的電腦上執行的 Management Studio 複本執行這些步驟。

程序

切換至 InitiatorDB 資料庫

  • 將下列程式碼複製並貼入 [查詢編輯器] 視窗中。 然後執行它,將內容切換至您將起始交談的 InstInitiatorDB 資料庫。

        USE InstInitiatorDB;
        GO
    

啟動交談並傳送要求訊息

  • 將下列程式碼複製並貼入 [查詢編輯器] 視窗中。 然後,執行它以開始交談,並將要求訊息傳送至InstTargetDB中的//TgtDB/2InstSample/TargetService。 此程式碼必須在單一區塊中執行,因為系統會使用變數,將對話控制代碼從 BEGIN DIALOG 傳遞至 SEND 陳述式。 此批次會執行 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 課:接收要求和傳送回復

另請參閱