第 1 課:建立交談物件

適用於:SQL ServerAzure SQL 受控執行個體

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

程序

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

注意

這些範例已經過 SQL Server 2008 R2 (10.50.x) 的驗證。 建議使用 AdventureWorks 範例資料庫中的 AdventureWorks2008R2 範例資料庫來完成這些範例。

SQL Server 的目前版本支援 SQL Server Service Broker。

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

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

建立訊息類型

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

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

建立合約

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

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

建立目標佇列和服務

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

        CREATE QUEUE TargetQueue1DB;
    
        CREATE SERVICE
               [//AWDB/1DBSample/TargetService]
               ON QUEUE TargetQueue1DB
               ([//AWDB/1DBSample/SampleContract]);
        GO
    

建立起始端佇列和服務

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

        CREATE QUEUE InitiatorQueue1DB;
    
        CREATE SERVICE
               [//AWDB/1DBSample/InitiatorService]
               ON QUEUE InitiatorQueue1DB;
        GO
    

後續步驟

您已成功將 AdventureWorks2008R2 設定為支援 //AWDB/1DBSample/InitiatorService//AWDB/1DBSample/TargetService 之間的交談。 在下一課,您將使用此組態來完成交談。 如需詳細資訊,請參閱第 2 課:開始交談和傳輸訊息

另請參閱