Share via


Lección 2: Crear la base de datos del iniciador

Nuevo: 15 de septiembre de 2007

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

Procedimientos

Crear un extremo de Service Broker

  1. Copie y pegue el código siguiente en una ventana del Editor de consultas. A continuación, 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 especifica la dirección de red a la que se envían los mensajes de Service Broker. Este extremo utiliza el valor predeterminado de Service Broker (puerto TCP 4022) y especifica que las instancias remotas de Database Engine (Motor de base de datos) utilicen conexiones con 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, utilice la seguridad certificada 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 sys.endpoints
               WHERE name = N'InstInitiatorEndpoint')
         DROP ENDPOINT InstInitiatorEndpoint;
    GO
    CREATE ENDPOINT InstInitiatorEndpoint
    STATE = STARTED
    AS TCP ( LISTENER_PORT = 4022 )
    FOR SERVICE_BROKER (AUTHENTICATION = WINDOWS );
    GO
    

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

  1. Copie y pegue el código siguiente en una ventana del Editor de consultas. Cambie la contraseña de la instrucción CREATE MASTER KEY. A continuación, ejecute el código para crear la base de datos de destino utilizada en este tutorial. De forma predeterminada, las nuevas bases de datos tienen la opción ENABLE_BROKER activada. El código también crea el usuario y la clave maestra que se utilizarán para el cifrado y las conexiones remotas.

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

Crear el certificado de iniciador

  1. 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 de su sistema. A continuación, ejecute el código para crear el certificado de iniciador que se utiliza para cifrar los mensajes. La carpeta especificada debe tener permisos que eviten el acceso desde cuentas distintas a su cuenta de Windows y a la cuenta de Windows que ejecuta la instancia de Database Engine (Motor de base de datos). En la Lección 3 debe copiar manualmente el archivo InstInitiatorCertificate.cer en una carpeta a la que se pueda tener acceso desde la instancia de destino.

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

Crear los tipos de mensaje

  1. Copie y pegue el código siguiente en una ventana del Editor de consultas. A continuación, ejecútelo para crear los tipos de mensaje para la conversación. Los nombres y propiedades del tipo de mensaje especificados deben ser idénticos a los que se crearon en InstTargetDB, en la lección anterior.

    CREATE MESSAGE TYPE [//BothDB/ 2InstSample/RequestMessage]
           VALIDATION = WELL_FORMED_XML;
    CREATE MESSAGE TYPE [//BothDB/ 2InstSample/ReplyMessage]
           VALIDATION = WELL_FORMED_XML;
    GO
    

Crear el contrato

  1. Copie y pegue el código siguiente en una ventana del Editor de consultas. A continuación, ejecútelo para crear el contrato para la conversación. Los nombres y propiedades del contrato especificados deben ser idénticos al contrato que se va a crear en 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 el servicio y la cola de iniciador

  1. Copie y pegue el código siguiente en una ventana del Editor de consultas. A continuación, ejecútelo para crear la cola y el servicio que se utilizan para el destino. La instrucción CREATE SERVICE asocia el servicio a InstInitiatorQueue. Por consiguiente, todos los mensajes que se envían al servicio se recibirán en InstInitiatorQueue. CREATE SERVICE especifica también que sólo las conversaciones que utilizan la ruta //BothDB/ 2InstSample/SimpleContract creada anteriormente pueden utilizar el servicio como un servicio de destino.

    CREATE QUEUE InstInitiatorQueue;
    
    CREATE SERVICE [//InstDB/2InstSample/InitiatorService]
           AUTHORIZATION InitiatorUser
           ON QUEUE InstInitiatorQueue;
    GO
    

Crear las referencias a los objetos de destino

  1. Copie y pegue el código siguiente en una ventana del Editor de consultas. Cambie la cláusula FROM FILE para hacer referencia a la carpeta en la que copió el archivo InstTargetCertficate.cer del paso 3 de la Lección 1. A continuación, ejecute el código para crear un usuario de destino y extraer el certificado de destino.

    CREATE USER TargetUser WITHOUT LOGIN;
    
    CREATE CERTIFICATE InstTargetCertificate 
       AUTHORIZATION TargetUser
       FROM FILE = 
    N'C:\storedcerts\$ampleSSBCerts\InstTargetCertificate.cer'
    GO
    

Crear rutas

  1. Copie y pegue el código siguiente en una ventana del Editor de consultas. Cambie la cadena MyTargetComputer al nombre del equipo que ejecuta su instancia de destino. A continuación, ejecute el código para crear las rutas al servicio de destino y al servicio de iniciador y un enlace de servicio remoto que asocia TargetUser a la ruta del servicio de destino.

    Las siguientes instrucciones CREATE ROUTE suponen que no hay ningún nombre de servicio duplicado en la instancia de destino. Si varias bases de datos de la instancia de destino contienen servicios con el mismo nombre, utilice la cláusula BROKER_INSTANCE para especificar la base de datos en la que desea abrir una conversación.

    DECLARE @Cmd NVARCHAR(4000);
    
    SET @Cmd = N'USE InstInitiatorDB;
    CREATE ROUTE InstTargetRoute
    WITH SERVICE_NAME =
           N''//TgtDB/2InstSample/TargetService'',
         ADDRESS = N''TCP://MyTargetComputer:4022'';';
    
    EXEC (@Cmd);
    
    SET @Cmd = N'USE msdb
    CREATE ROUTE InstInitiatorRoute
    WITH SERVICE_NAME =
           N''//InstDB/2InstSample/InitiatorService'',
         ADDRESS = N''LOCAL''';
    
    EXEC (@Cmd);
    GO
    CREATE REMOTE SERVICE BINDING TargetBinding
          TO SERVICE
             N'//TgtDB/2InstSample/TargetService'
          WITH USER = TargetUser;
    
    GO
    

Pasos siguientes

Ha creado correctamente las bases de datos de iniciador que se utilizarán en el tutorial. A continuación, terminará de configurar la base de datos de destino después de crear los objetos de destino que tienen dependencias en objetos de iniciador. Vea Lección 3: Finalizar los objetos de conversación del destino.

Vea también

Otros recursos

BACKUP CERTIFICATE (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
CREATE CONTRACT (Transact-SQL)
CREATE DATABASE (Transact-SQL)
CREATE ENDPOINT (Transact-SQL)
CREATE MASTER KEY (Transact-SQL)
CREATE MESSAGE TYPE (Transact-SQL)
CREATE QUEUE (Transact-SQL)
CREATE REMOTE SERVICE BINDING (Transact-SQL)
CREATE ROUTE (Transact-SQL)
CREATE SERVICE (Transact-SQL)
CREATE USER (Transact-SQL)
EXECUTE (Transact-SQL)
sp_addlinkedserver (Transact-SQL)
Seguridad de diálogo de Service Broker
Arquitectura de la conversación
Arquitectura de servicio

Ayuda e información

Obtener ayuda sobre SQL Server 2005