Exemplo: Configurar o espelhamento de banco de dados usando a autenticação do Windows (Transact-SQL)

Aplica-se a: SQL Server

Este exemplo mostra todas as fases necessárias para criar uma sessão de espelhamento de banco de dados com uma testemunha, usando a Autenticação do Windows. Os exemplos deste tópico usam o Transact-SQL. Note que como uma alternativa para o uso das etapas do Transact-SQL, você pode usar o Assistente para Configurar Segurança de Espelhamento de Banco de Dados para a configuração do espelhamento de banco de dados. Para obter mais informações, confira Estabelecer uma Sessão de Espelhamento de Banco de Dados usando a Autenticação do Windows (SQL Server Management Studio).

Pré-requisito

O exemplo usa o banco de dados de exemplo do AdventureWorks , que, por padrão, usa o modelo de recuperação simples. Para usar espelhamento de banco de dados com este banco de dados, você deve alterar isso para usar o modelo de recuperação completa. Para fazer isto em Transact-SQL, use a instrução ALTER DATABASE, como se segue:

USE master;  
GO  
ALTER DATABASE AdventureWorks   
SET RECOVERY FULL;  
GO  

Para saber mais sobre como alterar o modelo de recuperação no SQL Server Management Studio, confira Exibir ou Alterar o Modelo de Recuperação de um Banco de dados (SQL Server).

Permissões

Exige a permissão ALTER no banco de dados e permissão CREATE ENDPOINT ou associação na função de servidor fixa sysadmin .

Exemplo

Neste exemplo, os dois parceiros e a testemunha são as instâncias de servidor padrão em três sistemas de computador. As três instâncias de servidor executam o mesmo domínio do Windows, mas a conta do usuário (usada como conta de serviço de inicialização) é diferente para a instância de servidor testemunha do exemplo.

A tabela a seguir resume os valores usados neste exemplo.

Função de espelhamento inicial Sistema de host Conta de usuário do domínio
Principal PARTNERHOST1 <Mydomain>\<dbousername>
Espelho PARTNERHOST5 <Mydomain>\<dbousername>
Witness (testemunha) WITNESSHOST4 <Somedomain>\<witnessuser>
  1. Crie um ponto de extremidade na instância de servidor principal (instância padrão em PARTNERHOST1).

    CREATE ENDPOINT Endpoint_Mirroring  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=7022)   
        FOR DATABASE_MIRRORING (ROLE=PARTNER)  
    GO  
    --Partners under same domain user; login already exists in master.  
    --Create a login for the witness server instance,  
    --which is running as Somedomain\witnessuser:  
    USE master ;  
    GO  
    CREATE LOGIN [Somedomain\witnessuser] FROM WINDOWS ;  
    GO  
    -- Grant connect permissions on endpoint to login account of witness.  
    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [Somedomain\witnessuser];  
    --Grant connect permissions on endpoint to login account of partners.  
    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [Mydomain\dbousername];  
    GO  
    
  2. Crie um ponto de extremidade na instância de servidor espelho (instância padrão em PARTNERHOST5).

    CREATE ENDPOINT Endpoint_Mirroring  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=7022)   
        FOR DATABASE_MIRRORING (ROLE=ALL)  
    GO  
    --Partners under same domain user; login already exists in master.  
    --Create a login for the witness server instance,  
    --which is running as Somedomain\witnessuser:  
    USE master ;  
    GO  
    CREATE LOGIN [Somedomain\witnessuser] FROM WINDOWS ;  
    GO  
    --Grant connect permissions on endpoint to login account of witness.  
    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [Somedomain\witnessuser];  
    --Grant connect permissions on endpoint to login account of partners.  
    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [Mydomain\dbousername];  
    GO  
    
  3. Crie um ponto de extremidade na instância de servidor testemunha (instância padrão em WITNESSHOST4).

    CREATE ENDPOINT Endpoint_Mirroring  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=7022)   
        FOR DATABASE_MIRRORING (ROLE=WITNESS)  
    GO  
    --Create a login for the partner server instances,  
    --which are both running as Mydomain\dbousername:  
    USE master ;  
    GO  
    CREATE LOGIN [Mydomain\dbousername] FROM WINDOWS ;  
    GO  
    --Grant connect permissions on endpoint to login account of partners.  
    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [Mydomain\dbousername];  
    GO  
    
  4. Crie o banco de dados espelho. Para obter mais informações, confira Preparar um Banco de Dados Espelho para Espelhamento – (SQL Server).

  5. Na instância de servidor espelho em PARTNERHOST5, defina a instância de servidor em PARTNERHOST1 como o parceiro (fazendo dele a instância de servidor principal inicial).

    ALTER DATABASE AdventureWorks   
        SET PARTNER =   
        'TCP://PARTNERHOST1.COM:7022'  
    GO  
    
  6. Na instância do servidor principal em PARTNERHOST1, defina a instância de servidor em PARTNERHOST5 como o parceiro (fazendo dele a instância de servidor espelho inicial).

    ALTER DATABASE AdventureWorks   
        SET PARTNER = 'TCP://PARTNERHOST5.COM:7022'  
    GO  
    
  7. No servidor principal, defina a testemunha (que está em WITNESSHOST4).

    ALTER DATABASE AdventureWorks   
        SET WITNESS =   
        'TCP://WITNESSHOST4.COM:7022'  
    GO  
    

Related Tasks

Consulte Também

ALTER DATABASE (Transact-SQL)
O ponto de extremidade de espelhamento de banco de dados (SQL Server)
Segurança de Transporte para Espelhamento de Banco de Dados e Grupos de Disponibilidade Always On (SQL Server)
Gerenciar metadados ao disponibilizar um banco de dados em outra instância do servidor (SQL Server)
Central de segurança do Mecanismo de Banco de Dados do SQL Server e Banco de Dados SQL do Azure