Compartilhar via


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

Aplica-se a: SQL Server

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 você possa garantir que sua rede está segura, recomendamos o uso de 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 esse estágio de configuração do espelhamento de banco de dados, confira Permitir que um ponto de extremidade de espelhamento de banco de dados use certificados para conexões de saída (Transact-SQL).

  2. Configurando conexões de saída

    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 esse estágio de configuração do espelhamento de banco de dados, confira Permitir que um ponto de extremidade de 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 como criar um banco de dados espelho, confira Preparar um Banco de Dados Espelho para Espelhamento (SQL Server).

  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, confira Permitir que um ponto de extremidade de espelhamento de banco de dados use certificados para conexões de saída (Transact-SQL).

[Início do exemplo]

Configurando conexões de saída

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  
    

Importante

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, confira Permitir que um ponto de extremidade de espelhamento de banco de dados use certificados para conexões de entrada (Transact-SQL).

[Início do exemplo]

Criando o banco de dados espelho

Para obter informações sobre como criar um banco de dados espelho, confira Preparar um Banco de Dados Espelho para Espelhamento (SQL Server).

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, confira Especificar 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 AdventureWorks   
        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 AdventureWorks   
        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 transaction safety.  
    ALTER DATABASE AdventureWorks   
        SET PARTNER SAFETY OFF  
    GO  
    

    Observaçã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 do exemplo]

Related Tasks

Consulte Também

Segurança de transporte para espelhamento de banco de dados e Grupos de Disponibilidade Always On (SQL Server)
Especificar um endereço de rede do servidor (Espelhamento de banco de dados)
O ponto de extremidade de espelhamento de banco de dados (SQL Server)
Usar certificados para um ponto de extremidade de Espelhamento de Banco de Dados (Transact-SQL)
ALTER DATABASE (Transact-SQL)
Central de segurança do Mecanismo de Banco de Dados do SQL Server e Banco de Dados SQL do Azure