Condividi tramite


Lezione 4: Inizio della conversazione

In questa lezione verranno descritte le procedure per avviare una conversazione tra due istanze di Motore di database e per inviare un messaggio di richiesta dall'istanza dell'initiator all'istanza di destinazione. Eseguire questi passaggi da una copia di Management Studio in esecuzione nello stesso computer come istanza dell'initiator.

Procedure

Passaggio al database InitiatorDB

  • Copiare e incollare il codice seguente in una finestra dell'editor di query. Eseguire quindi il codice per cambiare contesto passando al database InstInitiatorDB in cui verrà avviata la conversazione.

    USE InstInitiatorDB;
    GO
    

Avvio di una conversazione e invio di un messaggio di richiesta

  • Copiare e incollare il codice seguente in una finestra dell'editor di query. Eseguire quindi il codice per iniziare una conversazione e inviare un messaggio di richiesta a //TgtDB/2InstSample/TargetService nel database InstTargetDB. Il codice deve essere eseguito in un blocco, in quanto viene utilizzata una variabile per passare un handle di dialogo dall'istruzione BEGIN DIALOG all'istruzione SEND. Il batch esegue l'istruzione BEGIN DIALOG per iniziare la conversazione e quindi crea un messaggio di richiesta. Il batch utilizza quindi l'handle di dialogo in un'istruzione SEND per inviare il messaggio di richiesta sulla conversazione. L'ultima istruzione SELECT visualizza solo il testo del messaggio inviato.

    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
    

Passaggi successivi

È stato avviata correttamente una conversazione ed è stato inviato il messaggio di richiesta al servizio di destinazione. Nel passaggio successivo si riceverà il messaggio di richiesta dalla coda di destinazione e si invierà un messaggio di risposta al servizio Initiator. Vedere Lezione 5: Ricezione di una richiesta e invio di una risposta.