Exemplo: configurar 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 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:
Configurando conexões de saída
Este exemplo mostra as etapas para:
Configurar o Host_A para conexões de saída.
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).
Configurando conexões de saída
Este exemplo mostra as etapas para:
Configurar o Host_A para conexões de entrada.
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).
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 conexões de saída
Para configurar Host_A para conexões de saída
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
Faça um certificado para esta instância de servidor.
USE master; CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate'; GO
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
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
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
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
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
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
Faça backup de certificado de HOST_B.
BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer'; GO
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).
Configurando conexões de saída
Para configurar Host_A para conexões de entrada
Crie um logon em HOST_A para HOST_B.
USE master; CREATE LOGIN HOST_B_login WITH PASSWORD = '1Sample_Strong_Password!@#'; GO
--Crie um usuário para aquele logon.
CREATE USER HOST_B_user FOR LOGIN HOST_B_login; GO
--Associe o certificado ao usuário.
CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'C:\HOST_B_cert.cer' GO
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
Crie um logon em HOST_B para HOST_A.
USE master; CREATE LOGIN HOST_A_login WITH PASSWORD = '=Sample#2_Strong_Password2'; GO
Crie um usuário para aquele logon.
CREATE USER HOST_A_user FOR LOGIN HOST_A_login; GO
--Associe o certificado ao usuário.
CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'C:\HOST_A_cert.cer' GO
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).
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
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
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
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 AdventureWorks SET PARTNER SAFETY OFF GO
Observação
Se você pretende executar no modo de alta segurança com failover automático, deixe a segurança da transação definida como FULL (a configuração padrão) e adicione a testemunha o mais rápido possível depois de 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.
Related Tasks
Preparar um banco de dados espelho para espelhamento (SQL Server)
Administração de logons e trabalhos depois de troca de funções (SQL Server)
Gerenciar metadados ao disponibilizar um banco de dados em outra instância do servidor (SQL Server) (SQL Server)
Solução de problemas de configuração de espelhamento de banco de dados (SQL Server)
Consulte Também
Segurança de transporte para espelhamento de banco de dados e grupos de disponibilidade AlwaysOn (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