Compartir a través de


Lección 1: crear los objetos de conversación básicos

Se aplica a: SQL Server Azure SQL Managed Instance

En esta lección, obtendrá información sobre cómo generar todos los objetos que permiten a una base de datos admitir una conversación en ella.

Procedimientos

Habilitar Service Broker y cambiar a la base de datos AdventureWorks2008R2

Nota:

Los ejemplos se han validado en SQL Server 2008 R2 (10.50.x). Se recomienda usar la base de datos de ejemplo AdventureWorks2008R2 de las bases de datos de ejemplo AdventureWorks para completar los ejemplos.

SQL Server Service Broker se admite en la versión actual de SQL Server.

  • Copie y pegue el código siguiente en una ventana del Editor de consultas. A continuación, ejecútelo para asegurarse de que Service Broker está habilitado en la base de datos AdventureWorks2008R2, y cambie el contexto a la base de datos.

       USE master;
       GO
       ALTER DATABASE AdventureWorks2008R2
             SET ENABLE_BROKER;
       GO
       USE AdventureWorks2008R2;
        GO
    

Crear los tipos de mensaje

  • Copie y pegue el código siguiente en una ventana del Editor de consultas. Después, ejecútelo para crear los tipos de mensaje para la conversación. Dado que a menudo se hace referencia a los objetos de Service Broker a través de varias instancias del motor de base de datos, a la mayor parte de los objetos de Service Broker se les asigna nombre con formato URI. Esto ayuda a garantizar que son únicos en varios equipos. Ambos tipos de mensaje especifican que Service Broker solamente validará que los mensajes son documentos XML bien formados, y que no validará el código XML con un esquema concreto.

        CREATE MESSAGE TYPE
               [//AWDB/InternalAct/RequestMessage]
               VALIDATION = WELL_FORMED_XML;
        CREATE MESSAGE TYPE
               [//AWDB/InternalAct/ReplyMessage]
               VALIDATION = WELL_FORMED_XML;
        GO
    

Crear el contrato

  • Copie y pegue el código siguiente en una ventana del Editor de consultas. Después, ejecútelo para crear el contrato para la conversación. El contrato especifica que las conversaciones que lo utilizan deben enviar mensajes del tipo //AWDB/InternalAct/RequestMessage del iniciador al destino, y mensajes del tipo //AWDB/InternalAct/ReplyMessage del destino al iniciador.

        CREATE CONTRACT [//AWDB/InternalAct/SampleContract]
              ([//AWDB/InternalAct/RequestMessage]
               SENT BY INITIATOR,
               [//AWDB/InternalAct/ReplyMessage]
               SENT BY TARGET
              );
        GO
    

Crear la cola y el servicio de destino

  • Copie y pegue el código siguiente en una ventana del Editor de consultas. Después, ejecútelo para crear la cola y el servicio que se usa para el destino. Dado que se hace referencia a las colas de la misma base de datos de una manera similar que a las tablas y vistas, a los nombres de cola se les da formato igual que a los de las tablas o vistas. La instrucción CREATE SERVICE asocia el servicio a TargetQueueIntAct. Por consiguiente, todos los mensajes que se envíen al servicio se recibirán en TargetQueueIntAct. CREATE SERVICE también especifica que solo las conversaciones que usan el //AWDB/InternalAct/SampleContract que se ha creado anteriormente puedan usar el servicio como servicio de destino.

        CREATE QUEUE TargetQueueIntAct;
    
        CREATE SERVICE
               [//AWDB/InternalAct/TargetService]
               ON QUEUE TargetQueueIntAct
                  ([//AWDB/InternalAct/SampleContract]);
        GO
    

Crear la cola y el servicio del iniciador

  • Copie y pegue el código siguiente en una ventana del Editor de consultas. Después, ejecútelo para crear la cola y el servicio que se usa para el iniciador. Dado que no se especifica un nombre de contrato, ningún otro servicio puede usar este como servicio de destino.

        CREATE QUEUE InitiatorQueueIntAct;
    
        CREATE SERVICE
               [//AWDB/InternalAct/InitiatorService]
               ON QUEUE InitiatorQueueIntAct;
        GO
    

Pasos siguientes

Ha configurado correctamente AdventureWorks2022 para que asista a una conversación entre el //AWDB/InternalAct/InitiatorService y el //AWDB/InternalAct/TargetService. A continuación, creará un procedimiento almacenado para admitir la activación interna en la cola de destino. Para obtener más información, vea Lección 2: Crear un procedimiento de activación interno.

Consulte también