Lektion 4: Starten der Konversation

In dieser Lektion erfahren Sie, wie Sie eine Konversation starten, die sich über zwei Instanzen von Database Engine (Datenbankmodul) erstreckt, und wie Sie eine Anforderungsnachricht von der Initiatorinstanz an die Zielinstanz senden. Führen Sie diese Schritte von einer Kopie von Management Studio aus, die auf demselben Computer ausgeführt wird wie die Initiatorinstanz.

Verfahrensweisen

Wechseln zur InitiatorDB-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 den Kontext zur InitiatorDB-Datenbank zu wechseln, wo Sie die Konversation initiieren.

    USE InstInitiatorDB;
    GO
    

Starten einer Konversation und Senden einer Anforderungsnachricht

  • Kopieren Sie den folgenden Code, und fügen Sie ihn in einem Abfrage-Editorfenster ein. Führen Sie den Code anschließend aus, um eine Konversation zu starten und eine Anforderungsnachricht an //TgtDB/2InstSample/TargetService in der InstTargetDB zu senden. Der Code muss in einem Block ausgeführt werden, da eine Variable verwendet wird, um einen Dialoghandle von BEGIN DIALOG an die SEND-Anweisung zu übergeben. Der Batch führt die BEGIN DIALOG-Anweisung aus, um die Konversation zu starten, und erstellt anschließend eine Anforderungsnachricht. Anschließend verwendet er den Dialoghandle in einer SEND-Anweisung, um die Anforderungsnachricht für diese Konversation zu senden. Die letzte SELECT-Anweisung zeigt lediglich 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 die Anforderungsnachricht an den Zieldienst gesendet. Anschließend empfangen Sie die Anforderungsnachricht von der Zielwarteschlange und senden eine Antwortnachricht an den Initiatordienst. Siehe Lektion 5: Empfangen einer Anforderung und Senden einer Antwort.