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

  1. 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

  1. 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

Hilfe und Informationen

Informationsquellen für SQL Server 2005