Lektion 1: Erstellen der Konversationsobjekte
Neu: 15. September 2007
In dieser Lektion lernen Sie, alle Objekte zu erstellen, mit denen eine Datenbank eine Konversation in der Datenbank unterstützen kann.
Vorgehensweisen
Aktivieren von Service Broker und Wechseln zur AdventureWorks-Datenbank
Kopieren Sie den folgenden Code, und fügen Sie ihn in ein Abfrage-Editorfenster ein. Führen Sie ihn anschließend aus, um sicherzustellen, dass Service Broker in der
AdventureWorks
-Datenbank aktiviert ist. Wechseln Sie dann 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 ein Abfrage-Editorfenster ein. Führen Sie ihn dann aus, um die Nachrichtentypen für die Konversation zu erstellen. Da Service Broker-Objekte oft über mehrere Instanzen von Datenbankmodul referenziert werden, erhalten die meisten Service Broker-Objekte Namen im URI-Format. Damit wird sichergestellt, dass sie auf allen Computern eindeutig sind. Bei beiden Nachrichtentypen wird von Service Broker nur geprüft, ob die Nachrichten korrekt aufgebaute XML-Nachrichten sind. Der XML-Code wird nicht auf ein bestimmtes Schema hin überprüft.
CREATE MESSAGE TYPE [//AWDB/1DBSample/RequestMessage] VALIDATION = WELL_FORMED_XML; CREATE MESSAGE TYPE [//AWDB/1DBSample/ReplyMessage] VALIDATION = WELL_FORMED_XML; GO
Erstellen des Vertrags
Kopieren Sie den folgenden Code, und fügen Sie ihn in ein Abfrage-Editorfenster ein. Führen Sie ihn dann aus, um den Vertrag für die Konversation zu erstellen. Der Vertrag gibt an, dass Konversationen Nachrichten des Typs //AWDB/1DBSample/RequestMessage vom Initiator zum Ziel und Nachrichten des Typs //AWDB/1DBSample/ReplyMessage vom Ziel zum Initiator senden müssen.
CREATE CONTRACT [//AWDB/1DBSample/SampleContract] ([//AWDB/1DBSample/RequestMessage] SENT BY INITIATOR, [//AWDB/1DBSample/ReplyMessage] SENT BY TARGET ); GO
Erstellen von Zielwarteschlange und -dienst
Kopieren Sie den folgenden Code, und fügen Sie ihn in ein Abfrage-Editorfenster ein. Führen Sie ihn dann aus, um die Warteschlange und den Dienst zu erstellen, die für das Ziel verwendet werden. Da Warteschlangen aus derselben Datenbank auf ähnliche Weise wie Tabellen und Ansichten referenziert werden, werden die Namen von Warteschlangen wie Tabellen- oder Ansichtsnamen formatiert. Die CREATE SERVICE-Anweisung verknüpft den Dienst mit TargetQueue2DB. Deshalb werden alle Nachrichten, die an den Dienst gesendet werden, in TargetQueue2DB empfangen. Die CREATE SERVICE-Anweisung gibt außerdem an, dass nur Konversationen, welche den zuvor erstellten //AWDB/1DBSample/SampleContract verwenden, den Dienst als Zieldienst verwenden können.
CREATE QUEUE TargetQueue1DB; CREATE SERVICE [//AWDB/1DBSample/TargetService] ON QUEUE TargetQueue1DB ([//AWDB/1DBSample/SampleContract]); GO
Erstellen von Initiatorwarteschlange und -dienst
Kopieren Sie den folgenden Code, und fügen Sie ihn in ein Abfrage-Editorfenster ein. Führen Sie ihn dann aus, um die Warteschlange und den Dienst zu erstellen, die für den Initiator verwendet werden. Da kein Vertragsname angegeben ist, können keine anderen Dienste diesen Dienst als Zieldienst verwenden.
CREATE QUEUE InitiatorQueue1DB; CREATE SERVICE [//AWDB/1DBSample/InitiatorService] ON QUEUE InitiatorQueue1DB; GO
Nächste Schritte
Sie haben AdventureWorks erfolgreich konfiguriert, um eine Konversation zwischen dem //AWDB/1DBSample/InitiatorService und dem //AWDB/1DBSample/TargetService zu ermöglichen. Danach führen Sie mit der Konfiguration eine Konversation durch. Siehe Lektion 2: Starten einer Konversation und Senden von Nachrichten.
Siehe auch
Andere Ressourcen
ALTER DATABASE (Transact-SQL)
CREATE MESSAGE TYPE (Transact-SQL)
CREATE CONTRACT (Transact-SQL)
CREATE QUEUE (Transact-SQL)
CREATE SERVICE (Transact-SQL)
Konversationsarchitektur
Dienstarchitektur