Lección 1: Crear la base de datos de destino

En esta lección, aprenderá a crear la base de datos de destino y todos los objetos de destino de Service Broker que no tienen dependencias en la base de datos del iniciador. Ejecute estos pasos desde una copia de Management Studio que se ejecute en el mismo equipo que la instancia de destino de Database Engine (Motor de base de datos).

Procedimientos

Crear un extremo de Service Broker

  • Copie y pegue el código siguiente en una ventana del Editor de consultas. Después, ejecútelo para crear un extremo de Service Broker para esta instancia de Database Engine (Motor de base de datos). Un extremo de Service Broker establece la dirección de red a la que se envían los mensajes de Service Broker. Este extremo utiliza el puerto TCP predeterminado de Service Broker 4022 y establece que las instancias remotas de Database Engine (Motor de base de datos) utilizarán conexiones con la autenticación de Windows para enviar los mensajes.

    La autenticación de Windows funciona cuando ambos equipos están en el mismo dominio o en dominios de confianza. Si los equipos no están en dominios de confianza, use la seguridad de certificados para los extremos. Para obtener más información, vea Cómo crear certificados para la seguridad de transporte de Service Broker (Transact-SQL).

    USE master;
    GO
    IF EXISTS (SELECT * FROM master.sys.endpoints
               WHERE name = N'InstTargetEndpoint')
         DROP ENDPOINT InstTargetEndpoint;
    GO
    CREATE ENDPOINT InstTargetEndpoint
    STATE = STARTED
    AS TCP ( LISTENER_PORT = 4022 )
    FOR SERVICE_BROKER (AUTHENTICATION = WINDOWS );
    GO
    

Crear la base de datos de destino, la clave maestra y el usuario

  • Copie y pegue el código siguiente en una ventana del Editor de consultas. Cambie la contraseña en la instrucción CREATE MASTER KEY. Después, ejecútelo para crear la base de datos de destino que se usa para este tutorial. De manera predeterminada, las bases de datos nuevas tienen la opción ENABLE_BROKER establecida en on (activada). El código también crea la clave maestra y el usuario que se usarán para admitir el cifrado y conexiones remotas.

    USE master;
    GO
    IF EXISTS (SELECT * FROM sys.databases
               WHERE name = N'InstTargetDB')
         DROP DATABASE InstTargetDB;
    GO
    CREATE DATABASE InstTargetDB;
    GO
    USE InstTargetDB;
    GO
    CREATE MASTER KEY
           ENCRYPTION BY PASSWORD = N'<EnterStrongPassword1Here>';
    GO
    CREATE USER TargetUser WITHOUT LOGIN;
    GO
    

Crear el certificado de destino

  • Copie y pegue el código siguiente en una ventana del Editor de consultas. Cambie el nombre de archivo que se especifica en la instrucción BACKUP CERTIFICATE para hacer referencia a una carpeta del sistema. Después, ejecútelo para crear el certificado de destino que se usa para cifrar los mensajes. La carpeta que especifique debería tener permisos que impidan el acceso desde cuentas que no sean la suya de Windows y la cuenta de Windows con la que se ejecuta la instancia de Database Engine (Motor de base de datos). Para la lección 2 debe copiar manualmente el archivo InstTargetCertificate.cer en una carpeta a la que se pueda tener acceso desde la instancia del iniciador.

    CREATE CERTIFICATE InstTargetCertificate 
         AUTHORIZATION TargetUser
         WITH SUBJECT = 'Target Certificate',
              EXPIRY_DATE = N'12/31/2010';
    
    BACKUP CERTIFICATE InstTargetCertificate
      TO FILE = 
    N'C:\storedcerts\$ampleSSBCerts\InstTargetCertificate.cer';
    GO
    

Crear los tipos de mensaje

  • Copie y pegue el código siguiente en una ventana del Editor de consultas y después ejecútelo para crear los tipos de mensaje de la conversación. Los nombres y propiedades de tipos de mensaje que se especifiquen aquí deben ser idénticos a los que se crearán en la InstInitiatorDB en la lección siguiente.

    CREATE MESSAGE TYPE [//BothDB/2InstSample/RequestMessage]
           VALIDATION = WELL_FORMED_XML;
    CREATE MESSAGE TYPE [//BothDB/2InstSample/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 nombre y las propiedades de contrato que se especifiquen aquí deben ser idénticos a los del contrato que se creará en la InstInitiatorDB en la lección siguiente.

    CREATE CONTRACT [//BothDB/2InstSample/SimpleContract]
          ([//BothDB/2InstSample/RequestMessage]
             SENT BY INITIATOR,
           [//BothDB/2InstSample/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. La instrucción CREATE SERVICE asocia el servicio a la InstTargetQueue para que todos los mensajes que se envían al servicio se reciban en la InstTargetQueue. CREATE SERVICE también especifica que sólo las conversaciones que usan el //BothDB/ 2InstSample/SimpleContract que se creó anteriormente puedan usar el servicio como servicio de destino.

    CREATE QUEUE InstTargetQueue;
    
    CREATE SERVICE [//TgtDB/2InstSample/TargetService]
           AUTHORIZATION TargetUser
           ON QUEUE InstTargetQueue
           ([//BothDB/2InstSample/SimpleContract]);
    GO
    

Pasos siguientes

Ha creado correctamente las bases de datos que se usarán para el tutorial. Después, creará la InstInitiatorDB y la configurará con los objetos necesarios para admitir el extremo iniciador de una conversación de Service Broker. Vea Lección 2: Crear la base de datos del iniciador.