Lección 4: Iniciar la conversación

En esta lección obtendrá información sobre cómo iniciar una conversación que abarque dos instancias de Database Engine (Motor de base de datos) y enviar un mensaje de solicitud desde la instancia del iniciador a la instancia de destino. Ejecute estos pasos desde una copia de Management Studio que se ejecute en el mismo equipo que la instancia del iniciador.

Procedimientos

Cambiar a la base de datos InitiatorDB

  • Copie y pegue el código siguiente en una ventana del Editor de consultas. A continuación, ejecútelo para cambiar el contexto a la base de datos InsInitiatorDB donde iniciará la conversación.

    USE InstInitiatorDB;
    GO
    

Iniciar una conversación y enviar un mensaje de solicitud

  • Copie y pegue el código siguiente en una ventana del Editor de consultas. A continuación, ejecútelo para comenzar una conversación y enviar un mensaje de solicitud al //TgtDB/2InstSample/TargetService de la InstTargetDB. El código se debe ejecutar en un bloque debido a que se usa una variable para pasar un identificador de diálogo desde BEGIN DIALOG a la instrucción SEND. El lote ejecuta la instrucción BEGIN DIALOG para iniciar la conversación y después genera un mensaje de solicitud. A continuación, usa el identificador de diálogo en una instrucción SEND para enviar el mensaje de solicitud en esa conversación. La última instrucción SELECT sólo muestra el texto del mensaje que se envió.

    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
    

Pasos siguientes

Ha iniciado una conversación correctamente y ha enviado un mensaje de respuesta al servicio de destino. Después, recibirá el mensaje de solicitud de la cola de destino y enviará un mensaje de respuesta al servicio iniciador. Vea Lección 5: Recibir una solicitud y enviar una respuesta.