Restaurações completas de banco de dados (modelo de recuperação completa)Complete Database Restores (Full Recovery Model)

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

Em uma restauração completa de banco de dados, a meta é restaurar todo o banco de dados.In a complete database restore, the goal is to restore the whole database. O banco de dados inteiro fica offline durante a restauração.The whole database is offline for the duration of the restore. Antes que qualquer parte do banco de dados possa ficar online, todos os dados são recuperados a um ponto consistente, no qual todas as partes do banco de dados estejam no mesmo momento determinado e não exista nenhuma transação não confirmada.Before any part of the database can come online, all data is recovered to a consistent point in which all parts of the database are at the same point in time and no uncommitted transactions exist.

No modelo de recuperação completa, depois de restaurar seu backup ou backups de dados, você deve restaurar todos os backups de log de transações subsequentes e recuperar o banco de dados.Under the full recovery model, after you restore your data backup or backups, you must restore all subsequent transaction log backups and then recover the database. Você pode restaurar um banco de dados a um ponto de recuperação específico dentro de um destes backups de log.You can restore a database to a specific recovery point within one of these log backups. O ponto de recuperação pode ser uma data e hora específica, uma transação marcada ou um LSN (número de sequência de log).The recovery point can be a specific date and time, a marked transaction, or a log sequence number (LSN).

Ao restaurar um banco de dados, particularmente com o modelo de recuperação completa ou o modelo de recuperação bulk-logged, você deve usar uma única sequência de restauração.When restoring a database, particularly under the full recovery model or bulk-logged recovery model, you should use a single restore sequence. Uma sequência de restauração consiste em uma ou mais operações de restauração que movem dados por uma ou mais etapas da restauração.A restore sequence consists of one or more restore operations that move data through one or more of the phases of restore.

Fontes não confiáveisUntrusted sources

Não é recomendável anexar ou restaurar bancos de dados de origem desconhecida ou não confiável.We recommend that you do not attach or restore databases from unknown or untrusted sources. Esses bancos de dados podem conter códigos mal-intencionados que podem executar códigos Transact-SQLTransact-SQL inesperados ou causar erros que modifiquem o esquema ou a estrutura física do banco de dados.These databases could contain malicious code that might execute unintended Transact-SQLTransact-SQL code or cause errors by modifying the schema or the physical database structure. Antes de usar um banco de dados de uma origem desconhecida ou não confiável, execute o DBCC CHECKDB no banco de dados em um servidor que não seja de produção.Before you use a database from an unknown or untrusted source, run DBCC CHECKDB on the database on a non-production server. Examine também o código escrito pelo usuário no banco de dados, como procedimentos armazenados ou outro código definido pelo usuário.Also, examine the user-written code in the database, such as stored procedures or other user-defined code.

Backups de versões anterioresBackups from earlier versions

Para obter informações sobre suporte para backups de versões anteriores do SQL ServerSQL Server, veja a seção “Suporte de compatibilidade” de RESTORE (Transact-SQL).For information about support for backups from earlier versions of SQL ServerSQL Server, see the "Compatibility Support" section of RESTORE (Transact-SQL).

Restaurando um banco de dados até o ponto de falhaRestoring a Database to the Point of Failure

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.

Normalmente, a recuperação de um banco de dados até o ponto da falha envolve as seguintes etapas básicas:Typically, recovering a database to the point of failure involves the following basic steps:

  1. Faça um backup do log de transações ativas (conhecido como a parte final do log).Back up the active transaction log (known as the tail of the log). Isso cria um backup do final do log.This creates a tail-log backup. Se o log de transações ativas não estiver disponível, todas as transações naquela parte do log serão perdidas.If the active transaction log is unavailable, all transactions in that part of the log are lost.

    Importante

    No modelo de recuperação bulk-logged, o backup de qualquer log que contenha operações em massa requer acesso a todos os arquivos de dados no banco de dados.Under the bulk-logged recovery model, backing up any log that contains bulk-logged operations requires access to all data files in the database. Se os arquivos de dados não puderem ser acessados, não será possível fazer um backup do log de transações.If the data files cannot be accessed, the transaction log cannot be backed up. Nesse caso, você tem de refazer manualmente todas as alterações feitas desde o backup de log mais recente.In that case, you have to manually redo all changes that were made since the most recent log backup.

    Para obter mais informações, veja Backups da parte final do log (SQL Server).For more information, see Tail-Log Backups (SQL Server).

  2. Restaure o backup de banco de dados completo mais recente sem recuperar o banco de dados (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY).Restore the most recent full database backup without recovering the database (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY).

  3. Se houver backups diferenciais, restaure o mais recente sem recuperar o banco de dados (RESTORE DATABASE database_name FROM differential_backup_device WITH NORECOVERY).If differential backups exist, restore the most recent one without recovering the database (RESTORE DATABASE database_name FROM differential_backup_device WITH NORECOVERY).

    A restauração do backup mais recente diferencial reduz o número de backups de log que devem ser restaurados.Restoring the most recent differential backup reduces the number of log backups that must be restored.

  4. Iniciando com o primeiro backup de log de transações criado depois do backup que você acaba de restaurar, restaure os logs em sequência com NORECOVERY.Starting with the first transaction log backup that was created after the backup you just restored, restore the logs in sequence with NORECOVERY.

  5. Recupere o banco de dados (RESTORE DATABASE database_name WITH RECOVERY).Recover the database (RESTORE DATABASE database_name WITH RECOVERY). Alternativamente, essa etapa pode ser combinada com a restauração do último backup de log.Alternatively, this step can be combined with restoring the last log backup.

A ilustração a seguir mostra esta sequência de restauração.The following illustration shows this restore sequence. Depois de uma falha (1), um backup do final do log de final é criado (2).After a failure occurs (1), a tail-log backup is created (2). Em seguida, o banco de dados é restaurado ao ponto da falha.Next, the database is restored to the point of the failure. Isso envolve a restauração de um backup de banco de dados, de um backup diferencial subsequente e de todos os backups de log feitos depois do backup diferencial, inclusive o do backup do final do log.This involves restoring a database backup, a subsequent differential backup, and every log backup taken after the differential backup, including the tail-log backup.

Restauração completa de banco de dados para o momento da falhaComplete database restore to the time of a failure

Observação

Ao restaurar um backup de banco de dados em uma instância de servidor diferente, veja Copiar bancos de dados com Backup e Restauração.When you restore a database backup onto a different server instance, see Copy Databases with Backup and Restore.

Sintaxe básica de RESTORE do Transact-SQLBasic Transact-SQL RESTORE Syntax

A sintaxe básica de RESTORETransact-SQLTransact-SQL para a sequência de restauração na ilustração anterior é a seguinte:The basic RESTORETransact-SQLTransact-SQL syntax for the restore sequence in the preceding illustration is as follows:

  1. RESTORE DATABASE database FROM full database backup WITH NORECOVERY;RESTORE DATABASE database FROM full database backup WITH NORECOVERY;

  2. RESTORE DATABASE database FROM full_differential_backup WITH NORECOVERY;RESTORE DATABASE database FROM full_differential_backup WITH NORECOVERY;

  3. RESTORE LOG database FROM log_backup WITH NORECOVERY;RESTORE LOG database FROM log_backup WITH NORECOVERY;

    Repita essa etapa de log de restauração para cada backup de log adicional.Repeat this restore-log step for each additional log backup.

  4. RESTORE DATABASE database WITH RECOVERY;RESTORE DATABASE database WITH RECOVERY;

Exemplo: Recuperando até o ponto de falha (Transact-SQL)Example: Recovering to the Point of Failure (Transact-SQL)

O exemplo a seguir de Transact-SQLTransact-SQL mostra as opções essenciais em uma sequência de restauração que restaura o banco de dados até o ponto de falha.The following Transact-SQLTransact-SQL example shows the essential options in a restore sequence that restores the database to the point of failure. O exemplo cria um backup do final do log do banco de dados.The example creates a tail-log backup of the database. Em seguida, o exemplo restaura um backup de banco de dados completo e, depois, restaura o backup do final do log.Next, the example restores a full database backup and log backup and then restores the tail-log backup. O exemplo recupera o banco de dados em uma etapa final, separada.The example recovers the database in a separate, final step.

Observação

Esse exemplo usa um backup de banco de dados e um backup de log criados na seção “Usando backups de bancos de dados no modelo de recuperação completa” em Backups de bancos de dados completos (SQL Server).This example uses a database backup and log backup that is created in the "Using Database Backups Under the Full Recovery Model" section in Full Database Backups (SQL Server). Antes do backup do banco de dados, o banco de dados de exemplo AdventureWorks2012AdventureWorks2012 foi definido para usar o modelo de recuperação completa.Before the database backup, the AdventureWorks2012AdventureWorks2012 sample database was set to use the full recovery model.

USE master;  
--Create tail-log backup.  
BACKUP LOG AdventureWorks2012   
TO DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'    
   WITH NORECOVERY;   
GO  
--Restore the full database backup (from backup set 1).  
RESTORE DATABASE AdventureWorks2012   
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'   
  WITH FILE=1,   
    NORECOVERY;  
  
--Restore the regular log backup (from backup set 2).  
RESTORE LOG AdventureWorks2012   
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'   
  WITH FILE=2,   
    NORECOVERY;  
  
--Restore the tail-log backup (from backup set 3).  
RESTORE LOG AdventureWorks2012   
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'  
  WITH FILE=3,   
    NORECOVERY;  
GO  
--recover the database:  
RESTORE DATABASE AdventureWorks2012 WITH RECOVERY;  
GO  

Restaurando um banco de dados em um ponto em um backup de logRestoring a Database to a Point Within a Log Backup

No modelo de recuperação completa, uma restauração de banco de dados completa pode ser recuperada normalmente até um ponto de hora, uma transação marcada ou um LSN dentro de um backup de log.Under the full recovery model, a complete database restore can usually be recovered to a point of time, a marked transaction, or an LSN within a log backup. Porém, no modelo de recuperação bulk-logged, se o backup de log contiver alterações registradas em massa, a recuperação pontual não será possível.However, under the bulk-logged recovery model, if the log backup contains bulk-logged changes, point-in-time recovery is not possible.

Exemplos de cenários de restauração point-in-timeSample Point-in-Time Restore Scenarios

O exemplo a seguir pressupõe um sistema de banco de dados crucial para o qual um backup de banco de dados completo é criado diariamente à meia-noite, um backup de banco de dados diferencial é criado a cada hora, de segunda-feira a sábado, e os backups de log de transações são criados a cada 10 minutos ao longo do dia.The following example assumes a mission-critical database system for which a full database backup is created daily at midnight, a differential database backup is created on the hour, Monday through Saturday, and transaction log backups are created every 10 minutes throughout the day. Para restaurar o banco de dados ao estado em que estava às 5h19 daTo restore the database to the state is was in at 5:19 A.M. quarta-feira, siga um destes procedimentos:Wednesday, do the following:

  1. Restaure o backup de banco de dados completo criado na terça-feira à meia-noite.Restore the full database backup that was created Tuesday at midnight.

  2. Restaure o backup de banco de dados diferencial criado às 5hRestore the differential database backup that was created at 5:00 A.M. na quarta-feira.on Wednesday.

  3. Aplique o backup de log de transações criado às 5h10Apply the transaction log backup that was created at 5:10 A.M. na quarta-feira.on Wednesday.

  4. Aplique o backup de log de transações criado às 5h20Apply the transaction log backup that was created 5:20 A.M. na quarta-feira, especificando que o processo de recuperação só se aplica a transações que ocorreram antes das 5h19.on Wednesday, specifying that the recovery process applies only to transactions that occurred before 5:19 A.M.

Ou então, se o banco de dados precisar ser restaurado ao estado em que estava às 3h04 daAlternatively, if the database needs to be restored to its state at 3:04 A.M. quinta-feira, mas o backup de banco de dados diferencial criado às 3h daThursday, but the differential database backup that was created at 3:00 A.M. quinta-feira não estiver disponível, faça o seguinte:Thursday is unavailable, do the following:

  1. Restaure o backup de banco de dados criado na quarta-feira à meia-noite.Restore the database backup that was created Wednesday at midnight.

  2. Restaure o backup de banco de dados diferencial criado às 2hRestore the differential database backup that was created at 2:00 A.M. na quinta-feira.on Thursday.

  3. Aplique todos os backups de log de transações criados das 2h10Apply all the transaction log backups created from 2:10 A.M. às 3hto 3:00 A.M. na quinta-feira.on Thursday.

  4. Aplique o backup de log de transações criado às 3h10Apply the transaction log backup that was created at 3:10 A.M. na quinta-feira, parando o processo de recuperação às 3h04.on Thursday, stopping the recovery process at 3:04 A.M.

Observação

Para obter um exemplo de uma restauração pontual, veja Restaurar um banco de dados do SQL Server em um ponto específico (Modelo de recuperação completa).For an example of a point-in-time restore, see Restore a SQL Server Database to a Point in Time (Full Recovery Model).

Tarefas relacionadasRelated Tasks

Para restaurar um backup de banco de dados completoTo restore a full database backup

Para restaurar um backup de banco de dados diferencialTo restore a differential database backup

Para restaurar um backup de log de transaçõesTo restore a transaction log backup

Para restaurar um backup usando o SQL Server Management Objects (SMO)To restore a backup by using SQL Server Management Objects (SMO)

Para restaurar um banco de dados para um ponto em um backup de logTo restore a database to a point within a log backup

Consulte TambémSee Also

RESTORE (Transact-SQL) RESTORE (Transact-SQL)
BACKUP (Transact-SQL) BACKUP (Transact-SQL)
Aplicar backups de log de transações (SQL Server) Apply Transaction Log Backups (SQL Server)
sp_addumpdevice (Transact-SQL) sp_addumpdevice (Transact-SQL)
Backups de bancos de dados completos (SQL Server) Full Database Backups (SQL Server)
Backups diferenciais (SQL Server) Differential Backups (SQL Server)
Visão geral do backup (SQL Server) Backup Overview (SQL Server)
Visão geral de restauração e recuperação (SQL Server)Restore and Recovery Overview (SQL Server)