Como configurar, manter e colocar online um Servidor em Espera Passiva (Transact-SQL)

A configuração de um servidor em espera geralmente envolve a criação de um backup completo e de backups periódicos de log de transações no servidor primário e a aplicação seguinte desses backups, em sequência, ao servidor em espera. O servidor em espera é fica no estado somente leitura entre as restaurações. Quando o servidor em espera precisa ficar disponível para uso, os backups de log de transações pendentes, incluindo o backup de log de transações ativo, do servidor primário, são aplicados ao servidor em espera e o banco de dados é recuperado.

Para criar backups no servidor primário

  1. Execute a instrução BACKUP DATABASE para criar o backup completo.

  2. Execute a instrução BACKUP LOG para criar um backup de log de transações.

  3. Repita a Etapa 2 para cada log de transações que você queira criar com o tempo.

Para configurar e manter o servidor em espera

  1. Execute a instrução RESTORE DATABASE usando a cláusula NORECOVERY para restaurar o backup completo criado na Etapa 1 no servidor primário.

  2. Execute a instrução RESTORE LOG usando a cláusula STANDBY para aplicar cada log de transações criado na Etapa 2 no servidor primário. Especifique o nome do arquivo de desfazer com o conteúdo das páginas de dados antes que as transações não confirmadas que afetam essas páginas sejam revertidas.

    ObservaçãoObservação

    Para obter um desempenho mais rápido, quando você aplicar vários logs, use WITH NORECOVERY. Às vezes, um arquivo em espera é necessário apenas como uma cópia de failover somente leitura que você poderá usar se a entidade for colocada offline.

  3. Repita a Etapa 2 para cada log de transações criado no servidor primário.

Para colocar o servidor em espera online (falha do servidor primário)

  1. Se possível, faça backup de log de transações ativas no momento (a parte final do log). Para criar um backup do final do log quando não for possível iniciar o banco de dados normalmente, execute a instrução BACKUP LOG no banco de dados primário usando WITH NO_TRUNCATE. Esse é o último backup de log de transações aplicado ao servidor em espera quando esse servidor é colocado online. Para obter mais informações, consulte Como criar um backup de log de transações (Transact-SQL).

  2. Execute a instrução RESTORE LOG usando a cláusula STANDBY para aplicar todos os backups de log de transações, incluindo o backup ativo criado na Etapa 1, que ainda não foi aplicado ao servidor em espera.

    ObservaçãoObservação

    Para obter um desempenho mais rápido, quando você aplicar vários logs, use WITH NORECOVERY. Para obter um exemplo de quando usar WITH STANDBY e quando usar WITH NORECOVERY, veja abaixo.

  3. Execute a instrução RESTORE DATABASE WITH RECOVERY para recuperar o banco de dados e colocar o servidor em espera online.

Exemplo

Este exemplo configura o banco de dados MyAdvWorks em um servidor em espera. O banco de dados pode ser usado no modo somente leitura entre operações de restauração.

-- Restore the initial full backup on the standby server.
USE master
GO
RESTORE DATABASE MyAdvWorks
   FROM MyAdvWorks_1 
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Apply the first transaction log backup.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log1
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Apply the next transaction log backup.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log2
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Repeat for each transaction log backup created on the 
-- primary server.
--
-- Time elapses.. .. ..
--
-- The primary server has failed. Back up the 
-- tail of the transaction log on the primary server.
BACKUP LOG MyAdvWorks
   TO MyAdvWorks_log3
   WITH NO_TRUNCATE
GO
-- Apply the final (active) transaction log backup
-- to the standby server. All preceding transaction
-- log backups must have been already applied.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log3
   WITH NORECOVERY 
GO
-- Recover the database on the standby server, 
-- making it available for normal operations.
RESTORE DATABASE MyAdvWorks
   WITH RECOVERY
GO