第 4 課:開始交談

新增: 2007 年 9 月 15 日

在本課程中,您將學習啟動跨越兩個 Database Engine 執行個體的交談,並從起始端執行個體傳送要求訊息至目標執行個體。您要從正在同一部電腦上當做起始端執行個體執行的 Management Studio 副本中執行這些步驟。

程序

切換至 InitiatorDB 資料庫

  1. 複製下列程式碼並在 [查詢編輯器] 視窗中貼上,然後執行,即可將內容切換為 InstInitiatorDB 資料庫,而您會在這裡啟始交談。

    USE InstInitiatorDB;
    GO
    

開始交談並傳送要求訊息

  1. 複製下列程式碼並在 [查詢編輯器] 視窗中貼上,然後執行,即可開始交談並傳送要求訊息至 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 課:接收要求並傳送回覆>。

請參閱

其他資源

BEGIN DIALOG CONVERSATION (Transact-SQL)
SEND (Transact-SQL)
Service Broker Programming Basics

說明及資訊

取得 SQL Server 2005 協助