Compartilhar via


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

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.

Importante

Não é recomendável anexar ou restaurar bancos de dados de origem desconhecida ou não confiável. Esses bancos de dados podem conter código mal-intencionado que pode executar código Transact-SQL não intencional ou causar erros modificando o esquema ou a estrutura de banco de dados física. Antes de usar um banco de dados de origem desconhecida ou não confiável, execute DBCC CHECKDB no banco de dados, em um servidor que não seja de produção. Além disso, examine o código, como procedimentos armazenados ou outro código definido pelo usuário, no banco de dados.

Neste tópico:

Observação

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.

Concluir a restauração do banco de dados no momento de uma 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 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 transact-SQL a seguir mostra as opções essenciais em uma sequência de restauração que restaura o banco de dados para 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

Este exemplo usa um backup de banco de dados e um backup de log que é criado na seção "Usando 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 AdventureWorks2012 foi definido para usar o modelo de recuperação completa.

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 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 para o estado em que se encontra à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 de banco de dados diferencial criado às 5h da quarta-feira.

  3. Aplique o backup de log de transações criado às 5h10 da quarta-feira.

  4. Aplique o backup de log de transações criado às 5h20 da quarta-feira, especificando que o processo de recuperação só se aplica a transações que ocorreram antes das 5h19.

Como alternativa, se o banco de dados precisar ser restaurado para seu estado às 3h04 de quinta-feira, mas o backup diferencial do banco de dados que foi criado às 3:00 da manhã 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 de banco de dados diferencial criado na quinta-feira às 2h.

  3. Aplique todos os backups de log de transações criados das 2h10 até às 3h da quinta-feira.

  4. Aplique o backup de log de transações criado às 3h10 da quinta-feira, parando o processo de recuperação às 3h04.

Observação

Para obter um exemplo de uma restauração pontual, consulte Restaurar um banco de dados SQL Server para um ponto no tempo (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

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