DBAtlas · Atlas de operações de banco de dados

Fazer um backup tail-log antes de um restore (NORECOVERY / NO_TRUNCATE)

SQL ServerRestore e recuperação

Comando

-- A) Healthy DB: back up the tail and put the DB into RESTORING (no new writes):
BACKUP LOG [Musteri]
TO DISK = N'D:\Backup\Musteri_tail.trn'
WITH NORECOVERY, CHECKSUM, INIT;

-- B) Damaged DB / data file lost, log file intact:
-- BACKUP LOG [Musteri]
-- TO DISK = N'D:\Backup\Musteri_tail_damaged.trn'
-- WITH NO_TRUNCATE, CONTINUE_AFTER_ERROR, INIT;

SELECT name, state_desc FROM sys.databases WHERE name = N'Musteri';

O que faz

Faz backup da parte do log gravada desde o último backup de log (o tail), para que a cadeia de restore chegue ao momento da falha e os últimos minutos de transações não se percam.

Quando usar

Antes de restaurar sobre o mesmo banco, quando o disco dos arquivos de dados falha ou no corte final de uma migração.

Atenção

NORECOVERY coloca o banco em RESTORING e encerra o acesso dos usuários; não execute no banco errado. Restaurar WITH REPLACE sem backup tail-log descarta permanentemente as transações após o último backup de log. Um backup feito com NO_TRUNCATE pode conter metadados incompletos; execute DBCC CHECKDB após o restore. Backup tail-log não é possível no recovery SIMPLE.

Abrir no DBAtlas →

Relacionados