Lição 1: Criando o banco de dados de destino
Nesta lição você aprenderá a criar o banco de dados de destino e todos os objetos de destino do Service Broker que não têm dependências no banco de dados de iniciador. Execute estas etapas de uma cópia do Management Studio que seja executada no mesmo computador da instância de destino do Mecanismo de Banco de Dados.
Procedimentos
Criar um ponto de extremidade do Service Broker
Copie e cole o código a seguir em uma janela do Editor de Consultas. Em seguida, execute-o para criar um ponto de extremidade Service Broker para essa instância do Mecanismo de Banco de Dados. O ponto de extremidade Service Broker estabelece o endereço de rede para o qual são enviadas mensagens Service Broker. Esse ponto de extremidade utiliza o padrão Service Broker da porta 4022 TCP e estabelece que as instâncias remotas do Mecanismo de Banco de Dados usarão as conexões da Autenticação do Windows para enviar mensagens.
A Autenticação do Windows funciona quando ambos os computadores estão no mesmo domínio ou em domínios confiáveis. Se os computadores não estiverem em domínios confiáveis, use segurança de certificado para os pontos de extremidade. Para obter mais informações, consulte Como criar certificados para a segurança de transporte do 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
Criar o banco de dados de destino, a chave mestra e o usuário
Copie e cole o código a seguir em uma janela do Editor de Consultas. Altere a senha na instrução CREATE MASTER KEY. Em seguida, execute o código para criar o banco de dados de destino usado para este tutorial. Por padrão, bancos de dados novos têm a opção ENABLE_BROKER definida como ON. O código também cria a chave mestra e o usuário a serem usados para oferecer suporte à criptografia e às conexões 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
Criar o certificado de destino
Copie e cole o código a seguir em uma janela do Editor de Consultas. Altere o nome do arquivo especificado na instrução BACKUP CERTIFICATE para que faça referência à pasta do sistema. Em seguida, execute o código para criar o certificado de destino que é usado para criptografar mensagens. A pasta especificada deve ter permissões que impeçam o acesso de outras contas que não sejam a conta do Windows e da conta do Windows em que a instância do Mecanismo de Banco de Dados é executada. Com relação à Lição 2, é preciso copiar manualmente o arquivo InstTargetCertificate.ce para uma pasta que possa ser acessada da instância de 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
Criar os tipos de mensagens
Copie e cole o código a seguir na janela do Editor de Consultas, executando-o depois para criar os tipos de mensagens para a conversação. Os nomes de tipo de mensagens e as propriedades especificadas aqui devem ser idênticos aos que você criará no InstInitiatorDB da próxima lição.
CREATE MESSAGE TYPE [//BothDB/2InstSample/RequestMessage] VALIDATION = WELL_FORMED_XML; CREATE MESSAGE TYPE [//BothDB/2InstSample/ReplyMessage] VALIDATION = WELL_FORMED_XML; GO
Criar o contrato
Copie e cole o código a seguir em uma janela do Editor de Consultas. Em seguida, execute-o para criar o contrato para a conversação. O nome e as propriedades do contrato especificados aqui devem ser idênticos ao do contrato que você criará no InstInitiatorDB na próxima lição.
CREATE CONTRACT [//BothDB/2InstSample/SimpleContract] ([//BothDB/2InstSample/RequestMessage] SENT BY INITIATOR, [//BothDB/2InstSample/ReplyMessage] SENT BY TARGET ); GO
Criar a fila de destino e o serviço
Copie e cole o código a seguir em uma janela do Editor de Consultas. Em seguida, execute-o para criar a fila e serviço a serem usados para o destino. A instrução CREATE SERVICE associa o serviço a InstTargetQueue, de modo que todas as mensagens enviadas para o serviço serão recebidas em InstTargetQueue. CREATE SERVICE também especifica que somente conversações que utilizam o //BothDB/ 2InstSample/SimpleContract e que foram criadas anteriormente podem usar o serviço como serviço de destino.
CREATE QUEUE InstTargetQueue; CREATE SERVICE [//TgtDB/2InstSample/TargetService] AUTHORIZATION TargetUser ON QUEUE InstTargetQueue ([//BothDB/2InstSample/SimpleContract]); GO
Próximas etapas
Você criou com êxito os bancos de dados a serem usados no tutorial. A seguir, você criará o InstInitiatorDB e o configurará com os objetos requeridos para oferecer suporte à extremidade iniciadora de uma Service Broker conversação. Consulte Lição 2: Criando o banco de dados iniciador.
Consulte também