Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Instância Gerenciada de SQL do Azure
Nesta lição, você aprenderá a criar o banco de dados iniciador e todos os objetos do Service Broker iniciador usados neste tutorial. Execute estas etapas a partir de uma cópia do Management Studio que esteja em execução no mesmo computador da instância iniciadora do Mecanismo de Banco de Dados.
Procedimentos
Crie um ponto de extremidade do Service Broker
Copie e cole o código a seguir em uma janela do Editor de Consultas e execute-o para criar um ponto de extremidade do Service Broker para esta instância do Mecanismo de Banco de Dados. O ponto de extremidade do Service Broker especifica o endereço de rede para o qual são enviadas mensagens. Esse ponto de extremidade utiliza o padrão do Service Broker de porta TCP 4022 e especifica 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 a segurança do certificado para os pontos de extremidade. Para obter mais informações, consulte Como criar certificados para a segurança de transporte do 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
Criar o banco de dados iniciador, 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
CREATE MASTER KEYinstrução e execute o código para criar o banco de dados de destino usado para este tutorial. Por padrão, novos bancos de dados têm a opçãoENABLE_BROKERdefinida como ativada. 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'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
Criar o certificado de iniciador
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 CERTIFICATEpara fazer referência a uma pasta em seu sistema. Em seguida, execute o código para criar o certificado do iniciador 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 3, é preciso copiar manualmente o arquivo InstInitiatorCertificate.cer para uma pasta que possa ser acessada da instância 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
Criar os tipos de mensagens
Copie e cole o código a seguir em uma janela do Editor de Consultas e execute-o para criar os tipos de mensagem para a conversa. Os nomes de tipo de mensagem e as propriedades especificadas aqui devem ser idênticos aos que foram criados na
InstTargetDBlição anterior.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 e execute-o para criar o contrato para a conversa. O nome do contrato e as propriedades especificadas aqui devem ser idênticas ao contrato que você cria durante a
InstInitiatorDBpróxima lição.CREATE CONTRACT [//BothDB/2InstSample/SimpleContract] ([//BothDB/2InstSample/RequestMessage] SENT BY INITIATOR, [//BothDB/2InstSample/ReplyMessage] SENT BY TARGET); GO
Criar a fila e o serviço do iniciador
Copie e cole o código a seguir em uma janela do Editor de Consultas e execute-o para criar a fila e o serviço usados para o destino. A
CREATE SERVICEinstrução associa o serviço ao InstInitiatorQueue. Portanto, todas as mensagens enviadas ao serviço serão recebidas no InstInitiatorQueue. OCREATE SERVICEtambém especifica que somente conversas que usam o BothDB/ 2InstSample/SimpleContract que foi criado anteriormente podem usar o serviço como um serviço de destino.CREATE QUEUE InstInitiatorQueue; CREATE SERVICE [//InstDB/2InstSample/InitiatorService] AUTHORIZATION InitiatorUser ON QUEUE InstInitiatorQueue; GO
Criar referências para objetos de destino
Copie e cole o código a seguir em uma janela do Editor de Consultas. Altere a
FROM FILEcláusula para referenciar a pasta à qual você copiou o arquivo InstTargetCertificate.cer da etapa 3 na Lição 1. Em seguida, execute o código para criar um usuário de destino extrair o certificado de destino.CREATE USER TargetUser WITHOUT LOGIN; CREATE CERTIFICATE InstTargetCertificate AUTHORIZATION TargetUser FROM FILE = N'C:\storedcerts\$ampleSSBCerts\InstTargetCertificate.cer'; GO
Criar rotas
Copie e cole o código a seguir em uma janela do Editor de Consultas. Altere a cadeia de caracteres MyTargetComputer para o nome do computador que está executando a instância de destino. Em seguida, execute o código para criar rotas para o serviço de destino e serviço iniciador, e uma associação de serviço remoto que vincule o TargetUser à rota de serviço de destino.
As instruções
CREATE ROUTEa seguir pressupõem que não há nomes de serviço duplicados na instância de destino. Se vários bancos de dados na instância de destino tiverem serviços com o mesmo nome, use aBROKER_INSTANCEcláusula para especificar o banco de dados no qual você deseja abrir uma conversa.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
Tarefas relacionadas
- CERTIFICADO DE BACKUP (Transact-SQL)
- CREATE CERTIFICATE (Transact-SQL)
- CREATE CONTRACT (Transact-SQL)
- CRIAR BANCO DE DADOS
- CREATE ENDPOINT (Transact-SQL)
- CREATE MASTER KEY (Transact-SQL)
- CRIAR TIPO DE MENSAGEM (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)
- Segurança da caixa de diálogo do Service Broker
- Arquitetura de conversa
- Arquitetura de serviço
Próxima etapa
Você criou com êxito os bancos de dados do iniciador para o tutorial. Em seguida, você termina de configurar o banco de dados de destino criando os objetos de destino que têm dependências em objetos iniciadores.