共用方式為


第 1 課:建立基底交談物件

在這一課,您將學會建立讓某個資料庫支援資料庫之交談的所有物件。

程序

啟用 Service Broker 並切換至 AdventureWorks2008R2 資料庫

  • 將下列程式碼複製並貼入 [查詢編輯器] 視窗中。然後,執行此程式碼以便確保 AdventureWorks2008R2 資料庫中的 Service Broker 已啟用,並且將內容切換至該資料庫。

    USE master;
    GO
    ALTER DATABASE AdventureWorks2008R2
          SET ENABLE_BROKER;
    GO
    USE AdventureWorks2008R2;
    GO
    

建立訊息類型

  • 將下列程式碼複製並貼入 [查詢編輯器] 視窗中。然後,執行此程式碼以便建立交談的訊息類型。由於 Service Broker 物件通常會在多個 Database Engine 執行個體之間參考,因此大部分 Service Broker 物件都會以 URI 格式指定名稱。這有助於確保它們在多部電腦之間是唯一的。這兩種訊息類型會指定 Service Broker 只會驗證訊息是否為格式正確的 XML 文件,而且它將不會針對特定結構描述驗證 XML。

    CREATE MESSAGE TYPE
           [//AWDB/InternalAct/RequestMessage]
           VALIDATION = WELL_FORMED_XML;
    CREATE MESSAGE TYPE
           [//AWDB/InternalAct/ReplyMessage]
           VALIDATION = WELL_FORMED_XML;
    GO
    

建立合約

  • 將下列程式碼複製並貼入 [查詢編輯器] 視窗中。然後,執行此程式碼以便建立交談的合約。此合約會指定使用它的交談必須將 //AWDB/InternalAct/RequestMessage 類型的訊息從起始端傳送至目標,並且將 //AWDB/InternalAct/ReplyMessage 類型的訊息從目標傳送至起始端。

    CREATE CONTRACT [//AWDB/InternalAct/SampleContract]
          ([//AWDB/InternalAct/RequestMessage]
           SENT BY INITIATOR,
           [//AWDB/InternalAct/ReplyMessage]
           SENT BY TARGET
          );
    GO
    

建立目標佇列和服務

  • 將下列程式碼複製並貼入 [查詢編輯器] 視窗中。然後,執行此程式碼以便建立用於目標的佇列和服務。由於佇列是以類似於資料表和檢視表的方式從相同的資料庫參考,因此佇列名稱的格式就如同資料表或檢視表名稱。CREATE SERVICE 陳述式會讓服務與 TargetQueueIntAct 產生關聯。因此,傳送至該服務所有訊息都會接收至 TargetQueueIntAct 中。CREATE SERVICE 也會指定只有使用先前建立之 //AWDB/InternalAct/SampleContract 的交談才能使用該服務當做目標服務。

    CREATE QUEUE TargetQueueIntAct;
    
    CREATE SERVICE
           [//AWDB/InternalAct/TargetService]
           ON QUEUE TargetQueueIntAct
              ([//AWDB/InternalAct/SampleContract]);
    GO
    

建立起始端佇列和服務

  • 將下列程式碼複製並貼入 [查詢編輯器] 視窗中。然後,執行此程式碼以便建立用於起始端的佇列和服務。由於沒有指定任何合約名稱,因此沒有其他服務能夠使用這項服務當做目標服務。

    CREATE QUEUE InitiatorQueueIntAct;
    
    CREATE SERVICE
           [//AWDB/InternalAct/InitiatorService]
           ON QUEUE InitiatorQueueIntAct;
    GO
    

後續的步驟

您已成功將 AdventureWorks2008R2 設定為支援 //AWDB/InternalAct/InitiatorService//AWDB/InternalAct/TargetService 之間的交談。接著,您將建立一個預存程序,以便支援目標佇列的內部啟用。請參閱<第 2 課:建立內部啟用程序>。