Partilhar via


Exemplo: Configurando o 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 usando autenticação baseada em certificado. Os exemplos neste tópico usam Transact-SQL. A menos que você possa garantir que sua rede é segura, recomendamos que você use 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. Tenha muito cuidado para manter todos os seus certificados seguros.

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, a autenticação baseada em certificado é necessária.

O papel principal inicial é assumido por HOST_A, e o papel de espelho é assumido por HOST_B.

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

  1. Configurando conexões de saída

    Este exemplo mostra as etapas para:

    1. Configurando Host_A para conexões de saída.

    2. Configurando 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, consulte 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 entrada

    Este exemplo mostra as etapas para:

    1. Configurando Host_A para conexões de entrada.

    2. Configurando 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 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, consulte 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 do banco de dados, se necessário. Substitua <password> por uma senha válida.

    USE master;  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';  
    GO  
    
  2. Crie um certificado para esta instância do 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 do servidor usando 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 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 segura, 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 do 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 do 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 do servidor no 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 uma cópia de segurança do certificado do HOST_B.

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

Para obter mais informações, consulte Permitir que um endpoint de espelhamento de base de dados utilize certificados para ligações de saída (Transact-SQL).

[Topo do exemplo]

Configurando conexões de entrada

Para configurar o Host_A para conexões de entrada

  1. Crie um login no HOST_A para HOST_B. Substitua <password> por uma senha válida.

    USE master;  
    CREATE LOGIN HOST_B_login WITH PASSWORD = '<password>';  
    GO  
    
  2. --Crie um usuário para esse login.

    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 login 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 login no 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 esse login.

    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 a permissão CONNECT ao login para o endpoint de espelhamento remoto.

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

Importante

Se você pretende executar no 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 entrada e saída. Configurar as conexões de entrada quando uma testemunha está envolvida requer que você configure logins e usuários para a testemunha em ambos os parceiros e para ambos os parceiros na testemunha.

Para obter mais informações, consulte Permita que um ponto de extremidade de espelhamento de banco de dados faça o uso de certificados para conexões de entrada (Transact-SQL).

[Topo do exemplo]

Criando o banco de dados espelho

Para obter informações sobre como criar um banco de dados espelho, consulte Preparar um banco de dados espelho para espelhamento (SQL Server).

Configurando os parceiros de espelhamento

  1. Na instância do servidor espelho no HOST_B, defina a instância do servidor em HOST_A como o parceiro (tornando-a a instância inicial do servidor principal). Substitua um endereço de rede válido por TCP://HOST_A.Mydomain.Corp.Adventure-Works``.com:7024. Para obter mais informações, consulte 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 do servidor principal no HOST_A, defina a instância do servidor em HOST_B como o parceiro (tornando-a a instância inicial do servidor espelho). 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. Este exemplo pressupõe que a sessão será executada no modo de alto desempenho. Para configurar esta sessão para o modo de alto desempenho, na instância do servidor principal (em HOST_A), defina a segurança da 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 pretender executar em modo de alta segurança com failover automático, mantenha a segurança das transações configurada para FULL (a configuração padrão) e adicione o testemunho o mais rapidamente possível após a execução da segunda instrução SET PARTNER 'partner_server'. Observe que a testemunha deve primeiro ser configurada para conexões de saída e entrada.

[Topo do exemplo]

Tarefas relacionadas

Ver também

Segurança de Transporte de 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 endpoint de espelhamento de base de dados (SQL Server)
Usar certificados para um endpoint de espelhamento de base de dados (Transact-SQL)
ALTERAR BASE DE DADOS (Transact-SQL)
Central de Segurança para o Mecanismo de Banco de Dados SQL Server e o Banco de Dados SQL Azure