Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Managed Instance
En esta lección, aprenderá a crear la base de datos del iniciador y todos los objetos de Service Broker del iniciador que se usan en este tutorial. Ejecute estos pasos desde una copia de Management Studio que se ejecute en el mismo equipo que la instancia del iniciador del 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 y, a continuación, ejecútelo para crear un punto de conexión de Service Broker para esta instancia del motor de base de datos. Un punto de conexión de Service Broker especifica 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 especifica que las instancias remotas del 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 están en dominios de confianza. Si los equipos no están en dominios de confianza, use la seguridad de certificados para los puntos de conexión. Para obtener más información, consulte How to: Create certificates for Service Broker transport security (Cómo: Crear certificados para la seguridad de transporte de Service Broker).
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 del iniciador, la clave maestra y el usuario
Copie y pegue el código siguiente en una ventana del Editor de consultas. Cambie la contraseña de la
CREATE MASTER KEYinstrucción y ejecute el código para crear la base de datos de destino que se usa para este tutorial. De forma predeterminada, las nuevas bases de datos tienen laENABLE_BROKERopción activada. El código también crea la clave maestra y el usuario que se usarán para admitir cifrado y 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 del iniciador
Copie y pegue el código siguiente en una ventana del Editor de consultas. Cambie el nombre de archivo especificado en la
BACKUP CERTIFICATEinstrucción para hacer referencia a una carpeta del sistema. A continuación, ejecute el código para crear el certificado del iniciador 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 del motor de base de datos. Para 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
Copie y pegue el código siguiente en una ventana del Editor de consultas y ejecútelo para crear los tipos de mensaje para la conversación. Los nombres y propiedades de tipo de mensaje especificados aquí deben ser idénticos a los que se crearon en la
InstTargetDBlecció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
Copie y pegue el código siguiente en una ventana del Editor de consultas y, a continuación, ejecútelo para crear el contrato para la conversación. El nombre del contrato y las propiedades que se especifican aquí deben ser idénticos al contrato que se crea en durante
InstInitiatorDBla siguiente lección.CREATE CONTRACT [//BothDB/2InstSample/SimpleContract] ([//BothDB/2InstSample/RequestMessage] SENT BY INITIATOR, [//BothDB/2InstSample/ReplyMessage] SENT BY TARGET); GO
Crear la cola y el servicio del iniciador
Copie y pegue el código siguiente en una ventana del Editor de consultas y, a continuación, ejecútelo para crear la cola y el servicio que se usa para el destino. La
CREATE SERVICEinstrucción asocia el servicio a InstInitiatorQueue. Por consiguiente, todos los mensajes que se envíen al servicio se recibirán en InstInitiatorQueue. TambiénCREATE SERVICEespecifica que solo las conversaciones que usan BothDB/ 2InstSample/SimpleContract que se creó anteriormente pueden usar el servicio como 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
Copie y pegue el código siguiente en una ventana del Editor de consultas. Cambie la
FROM FILEcláusula para hacer referencia a la carpeta a la que copió el archivo InstTargetCertificate.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
Creación de rutas
Copie y pegue el código siguiente en una ventana del Editor de consultas. Cambie la cadena MyTargetComputer por el nombre del equipo que ejecute su instancia de destino. A continuación, ejecute el código para crear las rutas del servicio de destino y del servicio iniciador, y un enlace de servicio remoto que asocie TargetUser a la ruta del servicio de destino.
En las instrucciones siguientes
CREATE ROUTEse supone que no hay nombres de servicio duplicados en la instancia de destino. Si varias bases de datos de la instancia de destino tienen servicios con el mismo nombre, use laBROKER_INSTANCEcláusula para especificar la base de datos en la que desea abrir una conversación.DECLARE @Cmd AS NVARCHAR (4000); SET @Cmd = N'USE InstInitiatorDB; CREATE ROUTE InstTargetRoute WITH SERVICE_NAME = N''//TgtDB/2InstSample/TargetService'', ADDRESS = N''TCP://MyTargetComputer:4022'';'; EXECUTE (@Cmd); SET @Cmd = N'USE msdb CREATE ROUTE InstInitiatorRoute WITH SERVICE_NAME = N''//InstDB/2InstSample/InitiatorService'', ADDRESS = N''LOCAL'''; EXECUTE (@Cmd); GO CREATE REMOTE SERVICE BINDING TargetBinding TO SERVICE N'//TgtDB/2InstSample/TargetService' WITH USER = TargetUser; GO
Tareas relacionadas
- BACKUP CERTIFICATE (Transact-SQL)
- CREATE CERTIFICATE (Transact-SQL)
- CREATE CONTRACT (Transact-SQL)
- CREAR BASE DE DATOS
- CREAR PUNTO FINAL (Transact-SQL)
- CREATE MASTER KEY (Transact-SQL)
- CREATE MESSAGE TYPE (Transact-SQL)
- CREATE QUEUE (Transact-SQL)
- CREAR VÍNCULO DE SERVICIO REMOTO (Transact-SQL)
- CREATE ROUTE (Transact-SQL)
- CREATE SERVICE (Transact-SQL)
- CREAR USUARIO (Transact-SQL)
- EXECUTE (Transact-SQL)
- sp_addlinkedserver (Transact-SQL)
- Seguridad del cuadro de diálogo de Service Broker
- Arquitectura de conversación
- Arquitectura del servicio
Paso siguiente
Ha creado correctamente las bases de datos del iniciador para el tutorial. A continuación, finalizará la configuración de la base de datos de destino mediante la creación de los objetos de destino que tienen dependencias en los objetos del iniciador.