Restaurações completas de banco de dados (modelo de recuperação completa)

Aplica-se a: SQL Server

Em uma restauração completa de banco de dados, a meta é restaurar todo o banco de dados. O banco de dados inteiro fica offline durante a restauração. 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.

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. Você pode restaurar um banco de dados a um ponto de recuperação específico dentro de um destes backups de log. 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).

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. 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.

Fontes não confiáveis

Não é recomendável anexar ou restaurar bancos de dados de origem desconhecida ou não confiável. Esses bancos de dados podem conter um código mal-intencionado que pode executar um código Transact-SQL inesperado ou provocar erros modificando o esquema ou a estrutura física do banco de dados. 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. 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.

Backups de versões anteriores

Para obter informações sobre suporte para backups de versões anteriores do SQL Server, veja a seção "Suporte de compatibilidade" de RESTORE (Transact-SQL).

Restaurando um banco de dados até o ponto de falha

Normalmente, a recuperação de um banco de dados até o ponto da falha envolve as seguintes etapas básicas:

  1. Faça um backup do log de transações ativas (conhecido como a parte final do log). Isso cria um backup do final do log. Se o log de transações ativas não estiver disponível, todas as transações naquela parte do log serão perdidas.

    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. Se os arquivos de dados não puderem ser acessados, não será possível fazer um backup do log de transações. Nesse caso, você tem de refazer manualmente todas as alterações feitas desde o backup de log mais recente.

    Para obter mais informações, veja Backups da parte final do log (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).

  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).

    A restauração do backup mais recente diferencial reduz o número de backups de log que devem ser restaurados.

  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.

  5. Recupere o banco de dados (RESTORE DATABASE database_name WITH RECOVERY). Alternativamente, essa etapa pode ser combinada com a restauração do último backup de log.

A ilustração a seguir mostra esta sequência de restauração. Depois de uma falha (1), um backup do final do log de final é criado (2). Em seguida, o banco de dados é restaurado ao ponto da falha. 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.

Restauração de banco de dados completa no momento da falha

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.

Sintaxe básica de RESTORE do Transact-SQL

A sintaxe básica de RESTORETransact-SQL para a sequência de restauração na ilustração anterior é a seguinte:

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

  2. RESTORE DATABASE database FROM full_differential_backup WITH NORECOVERY;

  3. RESTORE LOG database FROM log_backup WITH NORECOVERY;

    Repita essa etapa de log de restauração para cada backup de log adicional.

  4. RESTORE DATABASE database WITH RECOVERY;

Exemplo: Recuperando até o ponto de falha (Transact-SQL)

O exemplo de Transact-SQL a seguir mostra as opções essenciais em uma sequência de restauração que restaura o banco de dados até o ponto de falha. O exemplo cria um backup do final do log do banco de dados. Em seguida, o exemplo restaura um backup de banco de dados completo e, depois, restaura o backup do final do log. O exemplo recupera o banco de dados em uma etapa final, separada.

Observação

Esse exemplo usa um backup de banco de dados e um backup de log criado na seção "Usar backups de banco de dados no modelo de recuperação completa" em Backups completos de banco de dados (SQL Server). Antes do backup do banco de dados, o banco de dados de exemplo AdventureWorks2022 foi definido para usar o modelo de recuperação completa.

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

Restaurando um banco de dados em um ponto em um backup de log

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. 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.

Exemplos de cenários de restauração point-in-time

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. Para restaurar o banco de dados ao estado em que estava às 5h19 de quarta-feira, faça o seguinte:

  1. Restaure o backup de banco de dados completo criado na terça-feira à meia-noite.

  2. Restaure o backup diferencial do banco de dados que foi criado às 5h na quarta-feira.

  3. Aplique o backup do log de transações que foi criado às 5h10 na quarta-feira.

  4. Aplique o backup do log de transações que foi criado às 5h20 na quarta-feira, especificando que o processo de recuperação se aplica apenas a transações ocorridas antes das 5h19.

Como alternativa, se o banco de dados precisar ser restaurado para seu estado das 3h04 de quinta-feira, mas o backup diferencial do banco de dados que foi criado às 3h de quinta-feira não estiver disponível, faça o seguinte:

  1. Restaure o backup de banco de dados criado na quarta-feira à meia-noite.

  2. Restaure o backup diferencial do banco de dados que foi criado às 2h na quinta feira.

  3. Aplique todos os backups do log de transações criados das 2h10 às 3h00 na quinta feira.

  4. Aplicar o backup do log de transações que foi criado às 3h10 de quinta-feira, interrompendo o processo de recuperação às 3h04

Observação

Para obter um exemplo de restauração pontual, consulte Restaurar um banco de dados SQL Server para um momento específico (modelo de recuperação completa).

Related Tasks

Para restaurar um backup de banco de dados completo

Para restaurar um backup de banco de dados diferencial

Para restaurar um backup de log de transações

Para restaurar um backup usando o SQL Server Management Objects (SMO)

Para restaurar um banco de dados para um ponto em um backup de log

Confira também

RESTORE (Transact-SQL)
BACKUP (Transact-SQL)
Aplicar backups de log de transações (SQL Server)
sp_addumpdevice (Transact-SQL)
Backups de bancos de dados completos (SQL Server)
Backups diferenciais (SQL Server)
Backup Overview (SQL Server)
Visão geral da restauração e recuperação (SQL Server)