Estabelecer uma sessão de espelhamento de banco de dados com a Autenticação do Windows (Transact-SQL)

ObservaçãoObservação

Esse recurso será removido em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam. Use o Grupos de Disponibilidade AlwaysOn.

Depois que o banco de dados espelho estiver preparado (consulte Preparar um banco de dados espelho para espelhamento (SQL Server)), você poderá estabelecer uma sessão de espelhamento de banco de dados. As instâncias do servidor principal, espelho e testemunha devem ser instâncias de servidor separadas que deveriam estar em sistemas host separados.

Observação importanteImportante

Recomendamos que você configure um espelhamento de banco de dados em períodos de pouca atividade porque a configuração de espelhamento pode comprometer o desempenho.

ObservaçãoObservação

Uma determinada instância do servidor pode participar de várias sessões de espelhamento de banco de dados simultâneas com os mesmos parceiros ou diferentes. Uma instância do servidor pode ser um parceiro em algumas sessões e uma testemunha em outras sessões. A instância do servidor espelho deve estar executando a mesma edição do SQL Server como a instância do servidor principal. O espelhamento de banco de dados não está disponível em todas as edições do Microsoft SQL Server. Para obter uma lista de recursos com suporte nas edições do SQL Server, consulte Recursos compatíveis com as edições do SQL Server 2012. Além disso, é altamente recomendável que elas sejam executadas em sistemas comparáveis que possam controlar cargas de trabalho idênticas.

Para estabelecer uma sessão de espelhamento de banco de dados

  1. Crie o banco de dados espelho. Para obter mais informações, consulte Preparar um banco de dados espelho para espelhamento (SQL Server).

  2. Defina a segurança em cada instância do servidor.

    Cada instância do servidor em uma sessão de espelhamento de banco de dados exige um ponto de extremidade de espelhamento de banco de dados. Se o ponto de extremidade não existir, você deve criá-lo.

    ObservaçãoObservação

    A forma de autenticação usada para o espelhamento de banco de dados por uma instância do servidor é uma propriedade do ponto de extremidade de espelhamento de banco de dados. Dois tipos de segurança de transporte estão disponíveis para o espelhamento de banco de dados: autenticação do Windows ou autenticação com certificado. Para obter mais informações, consulte Segurança de transporte para espelhamento de banco de dados e grupos de disponibilidade AlwaysOn (SQL Server).

    Em cada servidor parceiro, assegure que existe um ponto de extremidade de espelhamento de banco de dados. Independentemente do número de sessões de espelhamento a dar suporte, a instância do servidor só pode ter um ponto de extremidade de espelhamento de banco de dados. Se você pretende usar essa instância do servidor exclusivamente para parceiros em sessões de espelhamento de banco de dados, você poderá definir a função de parceiro ao ponto de extremidade (ROLE**=**PARTNER). Se você também pretende usar essa instância do servidor exclusivamente para testemunhas em sessões de espelhamento de banco de dados, você poderá definir o papel de parceiro ao ponto de extremidade como ALL.

    Para executar uma instrução SET PARTNER, o STATE dos pontos de extremidade de ambos os parceiros deve ser definido como STARTED.

    Para saber se uma instância do servidor tem um ponto de extremidade de espelhamento de banco de dados e saber sua função e estado, nessa instância, use a seguinte instrução Transact-SQL:

    SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints
    
    Observação importanteImportante

    Não reconfigure um ponto de extremidade de espelhamento de banco de dados em uso. Se um ponto de extremidade do espelhamento de banco de dados já existir e estiver em uso, recomendamos que você use esse ponto de extremidade para cada sessão na instância do servidor. Cancelando um ponto de extremidade em uso pode fazer o ponto de extremidade reinicializar, interrompendo as conexões das sessões existentes, que podem aparecer como um erro às outras instâncias do servidor. Isso é particularmente importante em modo de alta segurança com failover automático no qual a reconfiguração de um ponto de extremidade em um parceiro poderia provocar um failover. Além disso, se uma testemunha foi definida para uma sessão, cancelar o ponto de extremidade de espelhamento de banco de dados poderá fazer com que o servidor principal daquela sessão perca quorum; se isso acontecer, o banco de dados será colocado offline e seus usuários serão desconectados. Para obter mais informações, consulte Quorum: como uma testemunha afeta a disponibilidade do banco de dados (Espelhamento de Banco de Dados).

    Se ambos os parceiros não tiverem um ponto de extremidade, consulte Criar um ponto de extremidade de espelhamento de banco de dados para a Autenticação do Windows (Transact-SQL).

  3. Se as instâncias de servidor estiverem sendo executadas em contas do usuário de domínio diferentes, cada uma exigirá um logon no banco de dados mestre dos outros. Se o logon não existir, você deve criá-lo. Para obter mais informações, consulte Permitir o acesso à rede a um ponto de extremidade de espelhamento de banco de dados usando a Autenticação do Windows (SQL Server).

  4. Para definir o servidor principal como parceiro no banco de dados espelho, conecte-se ao servidor espelho e emita a seguinte instrução:

    ALTER DATABASE <database_name> SET PARTNER = <server_network_address>

    onde <database_name> é o nome do banco de dados a ser espelhado (esse nome é o mesmo em ambos os parceiros) e <server_network_address> é o endereço de rede do servidor principal.

    A sintaxe para um endereço de rede do servidor é a seguinte:

    TCP**://<system-address>:**<port>

    onde <system-address> é uma cadeia de caracteres que identifica inequivocamente o sistema de computador de destino e <port> é o número da porta usado pelo ponto de extremidade de espelhamento da instância do servidor parceiro. Para obter mais informações, consulte Especificar um endereço de rede do servidor (Espelhamento de banco de dados).

    Por exemplo, na instância do servidor espelho, a seguinte instrução ALTER DATABASE define o parceiro como a instância do servidor principal original. O nome de banco de dados é AdventureWorks, o endereço de sistema é DBSERVER1 - o nome de sistema do parceiro - e a porta usada pelo ponto de extremidade de espelhamento de banco de dados do parceiro é 7022:

    ALTER DATABASE AdventureWorks 
       SET PARTNER = 'TCP://DBSERVER1:7022'
    

    Essa instrução prepara o servidor espelho para formar uma sessão quando é contatado pelo servidor principal.

  5. Para definir o servidor espelho como parceiro no banco de dados principal, conecte-se ao servidor principal e emita a seguinte instrução:

    ALTER DATABASE <database_name> SET PARTNER = <server_network_address>

    Para obter mais informações, consulte a etapa 4.

    Por exemplo, na instância do servidor principal, a seguinte instrução ALTER DATABASE define o parceiro como a instância do servidor espelho original. O nome do banco de dados é AdventureWorks, o endereço do sistema é DBSERVER2 - o nome de sistema do parceiro - e a porta usada pelo ponto de extremidade de espelhamento de banco de dados do parceiro é 7025:

    ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://DBSERVER2:7022'
    

    Inserir essa instrução no servidor principal inicia a sessão de espelhamento de banco de dados.

  6. Por padrão, uma sessão é definida como segurança de transação completa (SAFETY é definido como FULL), o qual inicia a sessão no modo síncrono de segurança alta, sem failover automático. Você pode reconfigurar a sessão para ser executada em modo de segurança alta com failover automático ou em modo assíncrono de alto desempenho, como se segue:

Exemplo

ObservaçãoObservação

O exemplo seguinte estabelece uma sessão de espelhamento de banco de dados entre parceiros para um banco de dados espelho existente. Para obter informações sobre como criar um banco de dados espelho, consulte Preparar um banco de dados espelho para espelhamento (SQL Server).

O exemplo mostra as etapas básicas para criar uma sessão de espelhamento de banco de dados sem uma testemunha. Os dois parceiros são as instâncias de servidor padrão em dois sistemas de computador (PARTNERHOST1 e PARTNERHOST5). As duas instâncias do parceiro executam a mesma conta do usuário no domínio Windows (MYDOMAIN\dbousername).

  1. Na instância do servidor principal (instância padrão em PARTNERHOST1), crie um ponto de extremidade dê suporte a todas as funções que usam a porta 7022:

    --create an endpoint for this instance
    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.
    
    ObservaçãoObservação

    Para obter um exemplo de como configurar um logon, consulte Permitir o acesso à rede a um ponto de extremidade de espelhamento de banco de dados usando a Autenticação do Windows (SQL Server).

  2. Na instância do servidor espelho (instância padrão em PARTNERHOST5), crie um ponto de extremidade que dê suporte a todas as funções que usam a porta 7022:

    --create an endpoint for this instance
    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.
    
  3. Na instância do servidor principal (em PARTNERHOST1), faça o backup do banco de dados:

    BACKUP DATABASE AdventureWorks 
        TO DISK = 'C:\AdvWorks_dbmirror.bak' 
        WITH FORMAT
    GO
    
  4. Na instância do servidor espelho (em PARTNERHOST5), restaure o banco de dados:

    RESTORE DATABASE AdventureWorks 
        FROM DISK = 'Z:\AdvWorks_dbmirror.bak' 
        WITH NORECOVERY
    GO
    
  5. Depois que você criar o backup de banco de dados completo, você deve criar um backup do log no banco de dados principal. Por exemplo, a seguinte instrução Transact-SQL faz o backup do log ao mesmo arquivo usado pelo backup de banco de dados precedente:

    BACKUP LOG AdventureWorks 
        TO DISK = 'C:\AdventureWorks.bak' 
    GO
    
  6. Para poder iniciar o espelhamento, é necessário aplicar o backup de log exigido (e qualquer backup de log subsequente).

    Por exemplo, a seguinte instrução Transact-SQL restaura o primeiro log de C:\AdventureWorks.bak:

    RESTORE LOG AdventureWorks 
        FROM DISK = 'C:\ AdventureWorks.bak' 
        WITH FILE=1, NORECOVERY
    GO
    
  7. Na instância do servidor espelho, defina a instância do servidor em PARTNERHOST1 como o parceiro (fazendo dele o servidor principal inicial):

    USE master;
    GO
    ALTER DATABASE AdventureWorks 
        SET PARTNER = 
        'TCP://PARTNERHOST1:7022'
    GO
    
    Observação importanteImportante

    Por padrão, uma sessão de espelhamento de banco de dados é executada modo síncrono, o que depende de ter uma transação de segurança completa (SAFETY é definido como FULL). Para fazer com que uma sessão seja executada em modo assíncrono, de alto desempenho, defina SAFETY como OFF. Para obter mais informações, consulte Modos de operação de espelhamento de banco de dados.

  8. Na instância do servidor principal, defina a instância do servidor em PARTNERHOST5 como o parceiro (fazendo dele o servidor espelho inicial):

    USE master;
    GO
    ALTER DATABASE AdventureWorks 
        SET PARTNER = 'TCP://PARTNERHOST5:7022'
    GO
    
  9. Opcionalmente, se você pretender usar modo de segurança alta com failover automático, configure a instância do servidor testemunha. Para obter mais informações, consulte Adicionar uma testemunha de espelhamento de banco de dados usando a Autenticação do Windows (Transact-SQL).

ObservaçãoObservação

Para obter um exemplo completo mostrando a configuração de segurança, a preparação do banco de dados espelho, a configuração de parceiros e a inclusão de uma testemunha, consulte Configurando uma sessão de espelhamento de banco de dados (SQL Server).

Consulte também

Tarefas

Permitir o acesso à rede a um ponto de extremidade de espelhamento de banco de dados usando a Autenticação do Windows (SQL Server)

Referência

ALTER DATABASE (Transact-SQL)

Conceitos

Configurando uma sessão de espelhamento de banco de dados (SQL Server)

Preparar um banco de dados espelho para espelhamento (SQL Server)

Criar um ponto de extremidade de espelhamento de banco de dados para a Autenticação do Windows (Transact-SQL)

Espelhamento de banco de dados e envio de logs (SQL Server)

Espelhamento de banco de dados (SQL Server)

Espelhamento e replicação de banco de dados (SQL Server)

Configurando uma sessão de espelhamento de banco de dados (SQL Server)

Especificar um endereço de rede do servidor (Espelhamento de banco de dados)

Modos de operação de espelhamento de banco de dados