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.
Vea también