Condividi tramite


Lezione 4: Avvio della conversazione

Data creazione: 15 settembre 2007

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

Procedure

Passare al database InitiatorDB

  1. Copiare e incollare il codice seguente in una finestra dell'editor di query, quindi eseguirlo per cambiare contesto passando al database InstInitiatorDB in cui sarà inizializzata la conversazione.

    USE InstInitiatorDB;
    GO
    

Avviare una conversazione e inviare un messaggio di richiesta

  1. Copiare e incollare il codice seguente in una finestra dell'editor di query, quindi eseguirlo per avviare una conversazione e inviare un messaggio di richiesta al servizio //TgtDB/2InstSample/TargetService nel database InstTargetDB. È necessario eseguire il codice in un unico blocco perché viene utilizzata una variabile per passare un handle di dialogo dall'istruzione BEGIN DIALOG all'istruzione SEND. L'istruzione BEGIN DIALOG del batch viene eseguita per avviare la conversazione e creare un messaggio di richiesta. Il messaggio di richiesta viene quindi inviato tramite l'handle di dialogo in un'istruzione SEND nella conversazione in esecuzione. L'ultima istruzione SELECT visualizza 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

È stata avviata una conversazione e inviato il messaggio di richiesta al servizio di destinazione. Nel passaggio successivo il messaggio di richiesta verrà ricevuto dalla coda di destinazione e un messaggio di risposta sarà inviato al servizio initiator. Vedere Lezione 5: Ricezione di una richiesta e invio di una risposta.

Vedere anche

Altre risorse

BEGIN DIALOG CONVERSATION (Transact-SQL)
SEND (Transact-SQL)
Service Broker Programming Basics

Guida in linea e informazioni

Assistenza su SQL Server 2005