Lektion 1: Erstellen der Basiskonversationsobjekte

In dieser Lektion erfahren Sie, wie Sie alle Objekte erstellen, die es einer Datenbank ermöglichen, eine Konversation in der Datenbank zu unterstützen.

Verfahrensweisen

Aktivieren von Service Broker und Wechseln zur AdventureWorks-Datenbank

  • Kopieren Sie den folgenden Code, und fügen Sie ihn in einem Abfrage-Editorfenster ein. Führen Sie den Code anschließend aus, um zu gewährleisten, dass Service Broker in der AdventureWorks-Datenbank aktiviert ist, und wechseln Sie den Kontext zur Datenbank.

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

Erstellen der Nachrichtentypen

  • Kopieren Sie den folgenden Code, und fügen Sie ihn in einem Abfrage-Editorfenster ein. Führen Sie den Code anschließend aus, um die Nachrichtentypen für die Konversation zu erstellen. Da Service Broker-Objekte häufig in mehreren Instanzen von Database Engine (Datenbankmodul) referenziert werden, haben die meisten Service Broker-Objekte einen Namen in einem URI-Format. Dadurch ist gewährleistet, dass der Name auf mehreren Computern eindeutig ist. Beide Nachrichtentypen geben an, dass Service Broker nur prüft, ob es sich bei den Nachrichten um wohl geformte XML-Dokumente handelt. Das XML wird nicht mit einem bestimmten Schema abgeglichen.

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

Erstellen des Vertrags

  • Kopieren Sie den folgenden Code, und fügen Sie ihn in einem Abfrage-Editorfenster ein. Führen Sie den Code anschließend aus, um den Vertrag für die Konversation zu erstellen. Der Vertrag gibt an, dass Konversationen, die den Vertrag verwenden, Nachrichten vom Typ //AWDB/InternalAct/RequestMessage vom Initiator an das Ziel und Nachrichten vom Typ //AWDB/InternalAct/ReplyMessage vom Ziel an den Initiator senden müssen.

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

Erstellen von Zielwarteschlange und Zieldienst

  • Kopieren Sie den folgenden Code, und fügen Sie ihn in einem Abfrage-Editorfenster ein. Führen Sie den Code anschließend aus, um die Warteschlange und den Dienst zu erstellen, die bzw. der für das Ziel verwendet wird. Da Warteschlangen ähnlich wie Tabellen und Sichten aus derselben Datenbank referenziert werden, werden Warteschlangennamen wie Tabellen- oder Sichtnamen formatiert. Die CREATE SERVICE-Anweisung verknüpft den Dienst mit TargetQueueIntAct. Daher gehen alle Nachrichten, die an den Dienst gesendet werden, in TargetQueueIntAct ein. Außerdem gibt die CREATE SERVICE-Anweisung an, dass nur Konversationen, die den zuvor erstellten //AWDB/InternalAct/SampleContract verwenden, den Dienst als Zieldienst verwenden können.

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

Erstellen von Initiatorwarteschlange und Initiatordienst

  • Kopieren Sie den folgenden Code, und fügen Sie ihn in einem Abfrage-Editorfenster ein. Führen Sie den Code anschließend aus, um die Warteschlange und den Dienst zu erstellen, die bzw. der für den Initiator verwendet wird. Da kein Vertragsname angegeben wird, können andere Dienste diesen Dienst nicht als Zieldienst verwenden.

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

Nächste Schritte

Sie haben AdventureWorks erfolgreich konfiguriert, um eine Konversation zwischen dem //AWDB/InternalAct/InitiatorService und dem //AWDB/InternalAct/TargetService zu unterstützen. Nun erstellen Sie eine gespeicherte Prozedur zur Unterstützung der internen Aktivierung in der Zielwarteschlange. Informationen dazu finden Sie unter Lektion 2: Erstellen einer Prozedur für die interne Aktivierung.