Compartilhar via


Restaurar um banco de dados para o ponto de falha no modelo de recuperação completa (Transact-SQL)

Este tópico explica como restaurar até o ponto de falha. O tópico é relevante apenas para bancos de dados que estão usando os modelos de recuperação completos ou bulk-logged.

Para restaurar ao ponto de falha

  1. Faça backup da parte final do log executando a seguinte instrução BACKUP básica:

    BACKUP LOG <database_name> TO <backup_device>   
       WITH NORECOVERY, NO_TRUNCATE;  
    
  2. Restaure um backup de banco de dados completo executando a seguinte instrução RESTORE DATABASE básica:

    RESTORE DATABASE <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  3. Opcionalmente, restaure um backup de banco de dados diferencial executando a seguinte instrução RESTORE DATABASE básica:

    RESTORE DATABASE <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  4. Aplique cada registro de transações, incluindo o backup do log final que você criou na etapa 1, especificando WITH NORECOVERY na instrução RESTORE LOG:

    RESTORE LOG <database_name> FROM <backup_device>   
       WITH NORECOVERY;  
    
  5. Recupere o banco de dados executando a seguinte instrução RESTORE DATABASE:

    RESTORE DATABASE <database_name>   
       WITH RECOVERY;  
    

Exemplo

Antes de executar o exemplo, você deve concluir as seguintes preparações:

  1. O modelo de recuperação padrão do banco de dados AdventureWorks2012 é o modelo de recuperação simples. Como esse modelo de recuperação não dá suporte à restauração ao ponto de uma falha, defina AdventureWorks2012 para usar o modelo de recuperação completa executando a seguinte instrução ALTER DATABASE :

    USE master;  
    GO  
    ALTER DATABASE AdventureWorks2012 SET RECOVERY FULL;  
    
  2. Crie um backup completo do banco de dados usando a seguinte instrução BACKUP:

    BACKUP DATABASE AdventureWorks2012 TO DISK = 'C:\AdventureWorks2012_Data.bck';  
    
  3. Crie um backup de log de rotina:

    BACKUP LOG AdventureWorks2012 TO DISK = 'C:\AdventureWorks2012_Log.bck';  
    

O exemplo a seguir restaura os backups criados anteriormente, depois de criar um backup de log final do banco de dados AdventureWorks2012 . (Esta etapa pressupõe que o disco de log possa ser acessado.)

Primeiro, o exemplo cria um backup do tail-log do banco de dados que captura o log ativo e deixa o banco de dados em estado de restauração. Em seguida, o exemplo restaura o backup do banco de dados, aplica o backup de log de rotina criado anteriormente e aplica o backup de log final. Por fim, o exemplo recupera o banco de dados em uma etapa separada.

Observação

O comportamento padrão é recuperar um banco de dados como parte da instrução que restaura o backup final.

/* Example of restoring a to the point of failure */  
-- Step 1: Create a tail-log backup by using WITH NORECOVERY.  
BACKUP LOG AdventureWorks2012  
   TO DISK = 'C:\AdventureWorks2012_Log.bck'  
   WITH NORECOVERY;  
GO  
-- Step 2: Restore the full database backup.  
RESTORE DATABASE AdventureWorks2012  
   FROM DISK = 'C:\AdventureWorks2012_Data.bck'  
   WITH NORECOVERY;  
GO  
-- Step 3: Restore the first transaction log backup.  
RESTORE LOG AdventureWorks2012  
   FROM DISK = 'C:\AdventureWorks2012_Log.bck'  
   WITH NORECOVERY;  
GO  
-- Step 4: Restore the tail-log backup.  
RESTORE LOG AdventureWorks2012  
   FROM  DISK = 'C:\AdventureWorks2012_Log.bck'  
   WITH NORECOVERY;  
GO  
-- Step 5: Recover the database.  
RESTORE DATABASE AdventureWorks2012  
   WITH RECOVERY;  
GO  

Consulte Também

BACKUP (Transact-SQL)
RESTORE (Transact-SQL)