Aplicar backups de log de transações (SQL Server)Apply Transaction Log Backups (SQL Server)

APLICA-SE A: simSQL Server nãoBanco de Dados SQL do Azure nãoSQL Data Warehouse do Azure nãoParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

O tópico só é relevante para o modelo de recuperação completa ou modelo de recuperação bulk-logged.The topic is relevant only for the full recovery model or bulk-logged recovery model.

Este tópico descreve a aplicação de backups de log de transações como parte da restauração de um banco de dados SQL ServerSQL Server .This topic describes applying transaction log backups as part of restoring a SQL ServerSQL Server database.

Requisitos para restaurar backups de log de transaçãoRequirements for restoring transaction log backups

Para aplicar um backup de log de transações, devem ser atendidos os seguintes requisitos:To apply a transaction log backup, the following requirements must be met:

  • backups de log suficientes para uma sequência de restauração: Você deve ter backups de registros de log suficientes para concluir uma sequência de restauração.Enough Log Backups for a Restore Sequence : You must have enough log records backed up to complete a restore sequence. Os backups de log necessários, incluindo o backup da parte final do log , quando necessário, devem estar disponíveis antes do início da sequência de restauração.The necessary log backups, including the tail-log backup where required, must be available before the start of the restore sequence.

  • Ordem de restauração correta: O backup de banco de dados completo imediatamente anterior ou backup de banco de dados diferencial deve ser restaurado primeiro.Correct restore order: The immediately previous full database backup or differential database backup must be restored first. Em seguida, todos os logs de transações criados após o backup de banco de dados completo ou diferencial devem ser restaurados em ordem cronológica.Then, all transaction logs that are created after that full or differential database backup must be restored in chronological order. Se um backup de log de transações nessa cadeia de logs for perdido ou danificado, você poderá restaurar apenas os logs de transações anteriores ao log ausente.If a transaction log backup in this log chain is lost or damaged, you can restore only transaction logs before the missing transaction log.

  • Banco de dados ainda não recuperado: O banco de dados não poderá ser recuperado até que o log de transações final seja aplicado.Database not yet recovered: The database cannot be recovered until after the final transaction log has been applied. Se você recuperar o banco de dados depois de restaurar um dos backups de log de transações intermediários antes do final da cadeia de logs, não poderá restaurar o banco de dados além desse ponto sem restaurar a sequência completa, começando com o backup de banco de dados completo.If you recover the database after restoring one of the intermediate transaction log backups, that before the end of the log chain, you cannot restore the database past that point without restarting the complete restore sequence, starting with the full database backup.

    DICA!TIP! Uma prática recomendada é restaurar todos os backups de log (RESTORE LOG database_name WITH NORECOVERY).A best practice is to restore all the log backups (RESTORE LOG database_name WITH NORECOVERY). Em seguida, depois de restaurar o último backup de log, recupere o banco de dados em uma operação separada (RESTORE DATABASE database_name WITH RECOVERY).Then, after restoring the last log backup, recover the database in a separate operation (RESTORE DATABASE database_name WITH RECOVERY).

Recuperação e logs de transaçõesRecovery and transaction logs

Ao concluir a operação de restauração e recuperar o banco de dados, a recuperação reverte todas as transações incompletas.When you finish the restore operation and recover the database, recovery rolls back all incomplete transactions. Isso é conhecido como o fase Desfazer.This is known as the undo phase. A reversão é necessária para restaurar a integridade do banco de dados.Rolling back is required to restore the integrity of the database. Depois da reversão, o banco de dados fica online e mais nenhum backup de log de transações pode ser aplicado ao banco de dados.After rollback, the database goes online, and no more transaction log backups can be applied to the database.

Por exemplo, uma série de backups de log de transações contém uma transação de execução longa.For example, a series of transaction log backups contain a long-running transaction. O início da transação é registrado no primeiro backup de log de transações, mas o término da transação é registrado no segundo backup de log de transações.The start of the transaction is recorded in the first transaction log backup, but the end of the transaction is recorded in the second transaction log backup. Não há registro de uma operação de confirmação ou reversão no primeiro backup de log de transações.There is no record of a commit or rollback operation in the first transaction log backup. Se uma operação de recuperação for executada quando o primeiro backup de log de transações for aplicado, a transação de longa execução será tratada como incompleta e as modificações de dados registradas no primeiro backup de log de transações serão revertidas.If a recovery operation runs when the first transaction log backup is applied, the long-running transaction is treated as incomplete, and data modifications recorded in the first transaction log backup for the transaction are rolled back. SQL ServerSQL Server não permite que o segundo backup de log de transação seja aplicado depois deste ponto.does not allow for the second transaction log backup to be applied after this point.

OBSERVAÇÃO: Em algumas circunstâncias, você pode adicionar um arquivo explicitamente durante a restauração do log.NOTE: In some circumstances, you can explicitly add a file during log restore.

Usar backups de log para restaurar até o ponto de falhaUse log backups to restore to the failure point

Considere a seguinte sequência de eventos.Assume the following sequence of events.

HoraTime EventoEvent
8:00h8:00 A.M. Faça um backup do banco de dados para criar um backup completo do banco de dados.Back up database to create a full database backup.
Meio-diaNoon Backup de log de transações.Back up transaction log.
16:00h4:00 P.M. Backup de log de transações.Back up transaction log.
18:00h6:00 P.M. Faça um backup do banco de dados para criar um backup completo do banco de dados.Back up database to create a full database backup.
20:00h8:00 P.M. Backup de log de transações.Back up transaction log.
21h459:45 P.M. Ocorre falha.Failure occurs.

Para obter uma explicação dessa sequência de exemplo de backups, veja Backups de log de transações (SQL Server).For an explanation of this example sequence of backups, see Transaction Log Backups (SQL Server).

Para restaurar o banco de dados a seu estado às 21h45To restore the database to its state at 9:45 P.M. (o ponto de falha), um dos seguintes procedimentos alternativos pode ser usado.(the point of failure), either of the following alternative procedures can be used:

Somos todos ouvidos: Se você encontrar algo desatualizado ou incorreto neste artigo, como uma etapa ou um exemplo de código, informe-nos.We are listening: If you find something outdated or incorrect in this article, such as a step or a code example, please tell us. Você pode clicar no botão Esta página na seção Comentários na parte inferior desta página.You can click the This page button in the Feedback section at the bottom of this page. Lemos todos os itens de comentários sobre o SQL, normalmente no dia seguinte.We read every item of feedback about SQL, typically the next day. Obrigado.Thanks.

Alternativa 1: restaurar o banco de dados usando o backup de banco de dados completo mais recenteAlternative 1: Restore the database by using the most recent full database backup

  1. Crie um backup do final do log de transações atualmente ativo a partir do ponto de falha.Create a tail-log backup of the currently active transaction log as of the point of failure.

  2. Não restaure o backup de banco de dados completo das 8hDo not restore the 8:00 A.M. 18h.full database backup. Restaure o backup de banco de dados completo mais recente dasInstead, restore the more recent 6:00 P.M. 18h e aplique o backup de log dasfull database backup, and then apply the 8:00 P.M. 20h e o backup da parte final do log.log backup and the tail-log backup.

Alternativa 2: restaurar o banco de dados usando o backup de banco de dados completo mais antigoAlternative 2: Restore the database by using an earlier full database backup

Esse processo alternativo será útil se um problema impedir o uso do backup de banco de dados completoThis alternative process is useful if a problem prevents you from using the 6:00 P.M. 18h.full database backup. Esse processo leva mais muito tempo do que restaurar o backup de banco de dados completo dasThis process takes longer than restoring from the 6:00 P.M. 18h.full database backup.

  1. Crie um backup do final do log de transações atualmente ativo a partir do ponto de falha.Create a tail-log backup of the currently active transaction log as of the point of failure.

  2. Restaure o backup de banco de dados completo das 8hRestore the 8:00 A.M. e, depois, restaure todos os quatro backups de log de transações em sequência.full database backup, and then restore all four transaction log backups in sequence. Isso efetua roll forward de todas as transações completas até 21h45.This rolls forward all completed transactions up to 9:45 P.M.

    Essa alternativa mostra a segurança redundante oferecida pela manutenção de uma cadeia de backups de log de transações em uma série de backups de banco de dados completos.This alternative points out the redundant security offered by maintaining a chain of transaction log backups across a series of full database backups.

Em alguns casos, você pode usar também logs de transações para restaurar um banco de dados até um point-in-time específico.In some cases, you can also use transaction logs to restore a database to a specific point in time. Para obter mais informações, veja Restaurar um banco de dados do SQL Server em um ponto específico (Modelo de recuperação completa).For more information, Restore a SQL Server Database to a Point in Time (Full Recovery Model).

Related tasksRelated tasks

Para aplicar um backup de log de transaçõesTo apply a transaction log backup

Para restaurar até seu ponto de recuperaçãoTo restore to your recovery point

Para recuperar um banco de dados depois de restaurar backups usando WITH NORECOVERYTo recover a database after restoring backups using WITH NORECOVERY

Confira tambémSee also

O log de transações (SQL Server)The Transaction Log (SQL Server)