Lektion 4: Starten der Konversation
Neu: 15. September 2007
In dieser Lektion lernen Sie, eine Konversation zu starten, die sich über beide Instanzen von Datenbankmodul erstreckt, und eine Anforderungsnachricht von der Initiator- zur Zielinstanz zu senden. Führen Sie diese Schritte mit einer Kopie von Management Studio aus, die auf dem gleichen Computer wie die Initiatorinstanz ausgeführt wird.
Vorgehensweisen
Wechseln zur InitiatorDB-Datenbank
Kopieren Sie den folgenden Code, und fügen Sie ihn in ein Abfrage-Editorfenster ein. Führen Sie ihn dann aus, um den Kontext zur Datenbank InstInitiatorDB zu wechseln, wo Sie die Konversation initiieren werden.
USE InstInitiatorDB; GO
Starten einer Konversation und Senden einer Anforderungsnachricht
Kopieren Sie den folgenden Code, und fügen Sie ihn in ein Abfrage-Editorfenster ein. Führen Sie ihn dann aus, um eine Konversation zu starten und eine Anforderungsnachricht an //TgtDB/2InstSample/TargetService in InstTargetDB zu senden. Der Code muss in einem Block ausgeführt werden, weil eine Variable zum Weiterleiten eines Dialoghandles von der BEGIN DIALOG-Anweisung zur SEND-Anweisung verwendet wird. Der Batch führt die BEGIN DIALOG-Anweisung aus, um die Konversation zu starten, und erstellt anschließend eine Anforderungsnachricht. Anschließend wird mithilfe des Dialoghandles in einer SEND-Anweisung die Anforderungsnachricht in dieser Konversation gesendet. Die letzte SELECT-Anweisung zeigt nur den Text der gesendeten Nachricht an.
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
Nächste Schritte
Sie haben erfolgreich eine Konversation gestartet und eine Antwortnachricht an den Zieldienst gesendet. Als Nächstes empfangen Sie die Anforderungsnachricht von der Zielwarteschlange und senden eine Antwortnachricht an den Initiatordienst. Siehe Lektion 5: Empfangen einer Anforderung und Senden einer Antwort.
Siehe auch
Andere Ressourcen
BEGIN DIALOG CONVERSATION (Transact-SQL)
SEND (Transact-SQL)
Service Broker Programming Basics