Compartilhar via


Lição 2: Criar o banco de dados do iniciador

Aplica-se a:SQL ServerInstâ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 KEY instruçã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ção ENABLE_BROKER definida 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 CERTIFICATE para 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 InstTargetDB liçã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 InstInitiatorDB 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 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 SERVICE instrução associa o serviço ao InstInitiatorQueue. Portanto, todas as mensagens enviadas ao serviço serão recebidas no InstInitiatorQueue. O CREATE SERVICE també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 FILE clá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 ROUTE a 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 a BROKER_INSTANCE clá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
    

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.