Exemplo: Configurando espelhamento de banco de dados usando certificados (Transact-SQL)

Este exemplo mostra todos os estágios necessários para criar uma sessão de espelhamento de banco de dados com uma autenticação baseada em certificado. Os exemplos deste tópico usam o Transact-SQL. A menos que seja possível garantir que sua rede está segura, recomendamos usar criptografia para conexões de espelhamento de banco de dados.

Ao copiar um certificado para outro sistema, use um método de cópia seguro. Seja extremamente cauteloso para manter todos os seus certificados em segurança.

Exemplo

O exemplo a seguir demonstra o que deve ser feito em um parceiro que reside em HOST_A. Neste exemplo, os dois parceiros são as instâncias de servidor padrão em três sistemas de computador. As duas instâncias de servidor são executadas em domínios não confiáveis do Windows, portanto, é necessária autenticação baseada em certificado.

A função principal inicial é assumida pelo HOST_A, e a função de espelho é assumida pelo HOST_B.

A configuração do espelhamento de banco de dados usando certificados envolve quatro estágios gerais, dos quais três — 1, 2 e 4 — são demonstrados por este exemplo. Esses estágios são os seguintes:

  1. Configurando conexões de saída

    Este exemplo mostra as etapas para:

    1. Configurar o Host_A para conexões de saída.

    2. Configurar o Host_B para conexões de saída.

    Para obter informações sobre este estágio de configuração do espelhamento de banco de dados, consulte Como permitir que o espelhamento de banco de dados use certificados para conexões de saída (Transact-SQL).

  2. Configurando conexões de entrada

    Este exemplo mostra as etapas para:

    1. Configurar o Host_A para conexões de entrada.

    2. Configurar o Host_B para conexões de entrada.

    Para obter informações sobre este estágio de configuração do espelhamento de banco de dados, consulte Como permitir que o espelhamento de banco de dados use certificados para conexões de entrada (Transact-SQL).

  3. Criando o banco de dados espelho

    Para obter informações sobre a criação de um banco de dados espelho, consulte Como preparar um banco de dados espelho para o espelhamento (Transact-SQL).

  4. Configurando os parceiros de espelhamento

Configurando conexões de saída

Para configurar Host_A para conexões de saída

  1. No banco de dados mestre, crie a chave mestra de banco de dados, se necessário.

    USE master;
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1_Strong_Password!>';
    GO
    
  2. Faça um certificado para esta instância de servidor.

    USE master;
    CREATE CERTIFICATE HOST_A_cert 
       WITH SUBJECT = 'HOST_A certificate';
    GO
    
  3. Crie um ponto de extremidade de espelhamento para a instância de servidor que usa o certificado.

    CREATE ENDPOINT Endpoint_Mirroring
       STATE = STARTED
       AS TCP (
          LISTENER_PORT=7024
          , LISTENER_IP = ALL
       ) 
       FOR DATABASE_MIRRORING ( 
          AUTHENTICATION = CERTIFICATE HOST_A_cert
          , ENCRYPTION = REQUIRED ALGORITHM AES
          , ROLE = ALL
       );
    GO
    
  4. Faça backup do certificado de HOST_A e copie-o para outro sistema, HOST_B.

    BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer';
    GO
    
  5. Usando qualquer método de cópia seguro, copie C:\HOST_A_cert.cer para HOST_B.

Para configurar Host_B para conexões de saída

  1. No banco de dados mestre, crie a chave mestra de banco de dados, se necessário.

    USE master;
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>';
    GO
    
  2. Faça um certificado na instância de servidor HOST_B.

    CREATE CERTIFICATE HOST_B_cert 
       WITH SUBJECT = 'HOST_B certificate for database mirroring';
    GO
    
  3. Crie um ponto de extremidade de espelhamento para a instância de servidor em HOST_B.

    CREATE ENDPOINT Endpoint_Mirroring
       STATE = STARTED
       AS TCP (
          LISTENER_PORT=7024
          , LISTENER_IP = ALL
       ) 
       FOR DATABASE_MIRRORING ( 
          AUTHENTICATION = CERTIFICATE HOST_B_cert
          , ENCRYPTION = REQUIRED ALGORITHM AES
          , ROLE = ALL
       );
    GO
    
  4. Faça backup de certificado de HOST_B.

    BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';
    GO 
    
  5. Usando qualquer método de cópia seguro, copie C:\HOST_ B_cert.cer para HOST_A.

Para obter mais informações, consulte Como permitir que o espelhamento de banco de dados use certificados para conexões de saída (Transact-SQL).

[Início]

Configurando conexões de entrada

Para configurar Host_A para conexões de entrada

  1. Crie um logon em HOST_A para HOST_B.

    USE master;
    CREATE LOGIN HOST_B_login WITH PASSWORD = '1Sample_Strong_Password!@#';
    GO
    
  2. --Crie um usuário para aquele logon.

    CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
    GO
    
  3. --Associe o certificado ao usuário.

    CREATE CERTIFICATE HOST_B_cert
       AUTHORIZATION HOST_B_user
       FROM FILE = 'C:\HOST_B_cert.cer'
    GO
    
  4. Conceda permissão CONNECT no logon para o ponto de extremidade de espelhamento remoto.

    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];
    GO
    

Para configurar Host_B para conexões de entrada

  1. Crie um logon em HOST_B para HOST_A.

    USE master;
    CREATE LOGIN HOST_A_login WITH PASSWORD = '=Sample#2_Strong_Password2';
    GO
    
  2. Crie um usuário para aquele logon.

    CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
    GO
    
  3. --Associe o certificado ao usuário.

    CREATE CERTIFICATE HOST_A_cert
       AUTHORIZATION HOST_A_user
       FROM FILE = 'C:\HOST_A_cert.cer'
    GO
    
  4. Conceda permissão CONNECT no logon para o ponto de extremidade de espelhamento remoto.

    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
    GO
    
Observação importanteImportante

Se tiver a intenção de executar em modo de alta segurança com failover automático, você deve repetir as mesmas etapas de configuração para configurar a testemunha para conexões de saída e de entrada. Quando uma testemunha está envolvida, a configuração de conexões de entrada e de saída requer a configuração de logons e usuários para a testemunha nos dois parceiros, e vice-versa.

Para obter mais informações, consulte Como permitir que o espelhamento de banco de dados use certificados para conexões de entrada (Transact-SQL).

[Início]

Criando o banco de dados espelho

Para obter informações sobre a criação de um banco de dados espelho, consulte Como preparar um banco de dados espelho para o espelhamento (Transact-SQL).

Configurando os parceiros de espelhamento

  1. Na instância de servidor espelho em HOST_B, defina a instância de servidor em HOST_A como o parceiro (fazendo dele a instância de servidor principal inicial). Substitua um endereço de rede válido por TCP://HOST_A.Mydomain.Corp.Adventure-Works.com:7024. Para obter mais informações, consulte Especificando um endereço de rede do servidor (Espelhamento de banco de dados).

    --At HOST_B, set server instance on HOST_A as partner (principal server):
    ALTER DATABASE AdventureWorks2008R2 
        SET PARTNER = 'TCP://HOST_A.Mydomain.Corp.Adventure-Works.com:7024';
    GO
    
  2. Na instância de servidor principal em HOST_A, defina a instância de servidor em HOST_B como o parceiro (fazendo dele a instância de servidor espelho inicial). Substitua um endereço de rede válido por TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024.

    --At HOST_A, set server instance on HOST_B as partner (mirror server).
    ALTER DATABASE AdventureWorks2008R2 
        SET PARTNER = 'TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024';
    GO
    
  3. Esse exemplo assume que a sessão estará sendo executada em modo de alto desempenho. Para configurar esta sessão para modo de alto desempenho, na instância de servidor principal (em HOST_A), defina segurança de transação como OFF.

    --Change to high-performance mode by turning off transacton safety.
    ALTER DATABASE AdventureWorks2008R2 
        SET PARTNER SAFETY OFF;
    GO
    
    ObservaçãoObservação

    Se desejar executar em modo de alta segurança com failover automático, deixe a segurança da transação configurada como FULL (a configuração padrão) e adicione a testemunha o mais cedo possível após executar a segunda instrução SET PARTNER 'partner_server'. Observe que a testemunha deve ser configurada primeiro para conexões de saída e de entrada.

[Início]

Consulte também

Tarefas

Referência

Conceitos