Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Managed Instance
Nesta lição, você aprenderá a criar o banco de dados do iniciador e todos os objetos do Service Broker do iniciador usados neste tutorial. Execute estas etapas a partir de uma cópia do Management Studio que esteja sendo executada no mesmo computador que a instância do iniciador, o Mecanismo de Banco de Dados.
Procedures
Criar 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. Um ponto de extremidade do Service Broker especifica o endereço de rede para o qual as mensagens do Service Broker são enviadas. Esse ponto de extremidade usa o padrão do Service Broker da porta TCP 4022 e especifica que instâncias remotas do Mecanismo de Banco de Dados usarão conexões de 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 de certificado para os pontos de extremidade. Para obter mais informações, consulte Como criar certificados para 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 do 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
CREATE MASTER KEYsenha na instrução e execute o código para criar o banco de dados de destino usado para este tutorial. Por padrão, os novos bancos de dados têm aENABLE_BROKERopção definida como ativada. O código também cria a chave mestra e o usuário que serão usados para suportar criptografia e 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 do iniciador
Copie e cole o código a seguir em uma janela do Editor de Consultas. Altere o nome do arquivo especificado na
BACKUP CERTIFICATEinstrução para fazer referência a uma pasta no seu sistema. Em seguida, execute o código para criar o certificado de iniciador usado para criptografar mensagens. A pasta especificada deve ter permissões que impeçam o acesso de contas diferentes da sua conta do Windows e da conta do Windows na qual a instância do Mecanismo de Banco de Dados está sendo executada. Para a Lição 3, você deve copiar manualmente o arquivo InstInitiatorCertificate.cer para uma pasta que possa ser acessada a partir 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 mensagem
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 e propriedades de tipo de mensagem especificados 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ênticos ao contrato criado na
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 do iniciador e o serviço
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 com o InstInitiatorQueue. Portanto, todas as mensagens que são enviadas para o 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 a objetos de destino
Copie e cole o código a seguir em uma janela do Editor de Consultas. Altere a
FROM FILEcláusula para fazer referência à pasta para a qual você copiou o arquivo de InstTargetCertificate.cer da etapa 3 da Lição 1. Em seguida, execute o código para criar um usuário de destino e obter 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 sua instância de destino. Em seguida, execute o código para criar rotas para o serviço de destino e o serviço iniciador e uma associação de serviço remoto que associe o TargetUser à rota de serviço de destino.
As instruções a seguir
CREATE ROUTEpressupõ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)
- CRIAR CERTIFICADO (Transact-SQL)
- CRIAR CONTRATO (Transact-SQL)
- CRIAR BANCO DE DADOS
- CRIAR ENDPOINT (Transact-SQL)
- CRIAR CHAVE MESTRA (Transact-SQL)
- CRIAR TIPO DE MENSAGEM (Transact-SQL)
- CRIAR FILA (Transact-SQL)
- CRIAR LIGAÇÃO DE SERVIÇO REMOTO (Transact-SQL)
- CRIAR ROTA (Transact-SQL)
- CRIAR SERVIÇO (Transact-SQL)
- CRIAR USUÁRIO (Transact-SQL)
- EXECUTAR (Transact-SQL)
- sp_addlinkedserver (Transact-SQL)
- Segurança da caixa de diálogo do Service Broker
- Arquitetura de conversação
- Arquitetura de serviços
Próximo passo
Você criou com êxito os bancos de dados do iniciador para o tutorial. Em seguida, conclua a configuração do banco de dados de destino criando os objetos de destino que têm dependências em objetos iniciadores.