Share via


Recuperando até um momento específico

Este tópico só é relevante para os bancos de dados do SQL Server que usam os modelos de recuperação bulk-logged ou completo.

No modelo de recuperação bulk-logged, se um backup de log contém alterações registradas em massa, a recuperação point-in-time não é possível para um ponto dentro desse backup. O banco de dados deve ser recuperado ao término do backup de log de transações.

Para restaurar a um tempo específico

Sintaxe Transact-SQL para restaurar a um tempo específico

Um momento especificado sempre é restaurado a partir de um backup de log. Em cada instrução RESTORE LOG da seqüência de restauração, especifique a transação ou o tempo designado em uma cláusula STOPAT idêntica. Como um pré-requisito para uma restauração pontual, você deve restaurar primeiro um backup de banco de dados completo cujo ponto de extremidade seja anterior ao tempo de recuperação designado. Esse backup de banco de dados completo pode ser anterior ao backup de banco de dados completo mais recente desde que você depois restaure todos os backups de log subseqüentes, até o backup de log que contém o tempo determinado.

Para ajudar a identificar qual backup de banco de dados restaurar, uma alternativa é especificar a cláusula WITH STOPAT em uma instrução RESTORE DATABASE para gerar um erro se um backup de dados for muito recente para o tempo designado especificado. O backup de dados completo será sempre restaurado, mesmo que ele contenha o tempo designado.

A sintaxe básica é:

RESTORE LOG database_name FROM <backup_device> WITH STOPAT =time, RECOVERY...

O ponto de recuperação é a última transação confirmada que ocorreu no valor datetime que é especificado pelo time ou antes dele.

Para restaurar apenas as modificações feitas antes de um point-in-time específico, especifique WITH STOPAT = time para cada backup a ser restaurado. Isso garante que você não ultrapassará o tempo de destino.

Geralmente, uma restauração point-in-time envolve as seguintes etapas:

  • Restaurar o último backup de banco de dados completo e, se houver, o último backup de banco de dados diferencial sem recuperar o banco de dados (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY).

  • Aplicar cada backup de log de transações na mesma seqüência em que eles foram criados, especificando o tempo em que você pretende parar a restauração de log (RESTORE DATABASE database_name FROM <backup_device> WITH STOPAT**=time,** RECOVERY).

Para obter mais informações, consulte Restaurando um banco de dados para um ponto em um backup.