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 isso no Transact-SQL, use a instrução ALTER DATABASE, conforme mostrado a seguir:

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 hospedeiro Conta de usuário do domínio
Principal PARTNERHOST1 <Mydomain>\<dbousername>
Espelho PARTNERHOST5 <Mydomain>\<dbousername>
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 endpoint na instância do servidor de testemunha (instância padrão do 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 de 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  
    

Tarefas Relacionadas