Partilhar via


Como restaurar para um momento determinado (Transact-SQL)

Esse tópico explica como restaurar para um momento determinado.

Para restaurar para um momento determinado

  1. Execute a instrução RESTORE DATABASE usando a opção NORECOVERY.

    ObservaçãoObservação

    Se uma seqüência de restauração parcial excluir qualquer grupo de arquivos FILESTREAM, não haverá suporte para a restauração em um momento determinado. É possível forçar a seqüência de restauração a continuar. Contudo, os grupos de arquivos FILESTREAM que são omitidos da instrução RESTORE nunca poderão ser restaurados. Para forçar uma restauração pontual, especifique a opção CONTINUE_AFTER_ERROR juntamente com a opção STOPAT, STOPATMARK ou STOPBEFOREMARK, que você também deve especificar nas instruções RESTORE LOG subseqüentes. Ao especificar CONTINUE_AFTER_ERROR, a seqüência de restauração parcial terá êxito e o grupo de arquivos FILESTREAM ficará irrecuperável.

  2. Execute a instrução RESTORE LOG para aplicar cada backup de log, especificando:

    • O nome do banco de dados ao qual o log de transações é aplicado.

    • O dispositivo de backup onde o backup de log de transações é restaurado.

    • As opções RECOVERY e STOPAT. Se o backup de log de transações não contiver o tempo solicitado (por exemplo, se o tempo especificado estiver além do tempo coberto pelo log de transações), um aviso será gerado e o banco de dados permanecerá sem recuperação.

Exemplo

O exemplo a seguir restaura um banco de dados para seu estado de 12:00 AM em April 15, 2020 e mostra uma operação de restauração que envolve vários backups de log. No dispositivo de backup, AdventureWorksBackups, o backup de banco de dados completo a ser restaurado é o terceiro conjunto de backup no dispositivo (FILE = 3), o primeiro backup de log é o quarto conjunto de backup (FILE = 4), e o segundo backup de log é o quinto conjunto de backup (FILE = 5).

Observação importanteImportante

O banco de dados AdventureWorks usa o modelo de recuperação simples. Para permitir backups de log, antes de fazer um backup de banco de dados completo, o banco de dados foi definido para usar o modelo de recuperação completa, usando ALTER DATABASE AdventureWorks SET RECOVERY FULL.

RESTORE DATABASE AdventureWorks
   FROM AdventureWorksBackups
   WITH FILE=3, NORECOVERY;

RESTORE LOG AdventureWorks
   FROM AdventureWorksBackups
   WITH FILE=4, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';

RESTORE LOG AdventureWorks
   FROM AdventureWorksBackups
   WITH FILE=5, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
RESTORE DATABASE AdventureWorks WITH RECOVERY; 
GO