DBAtlas · Atlas d'exploitation des bases de données

Effectuer une sauvegarde de fin du journal avant une restauration (NORECOVERY / NO_TRUNCATE)

SQL ServerRestauration et récupération

Commande

-- 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';

Ce que fait la commande

Sauvegarde la partie du journal écrite depuis la dernière sauvegarde du journal (la fin), afin que la chaîne de restauration atteigne le moment de la panne et que les dernières minutes de transactions ne soient pas perdues.

Quand l'utiliser

Avant de restaurer par-dessus la même base, quand le disque des fichiers de données tombe en panne, ou lors de la bascule finale d'une migration.

Attention

NORECOVERY place la base en RESTORING et coupe l'accès des utilisateurs ; ne l'exécutez pas sur la mauvaise base. Restaurer WITH REPLACE sans sauvegarde de fin du journal supprime définitivement les transactions postérieures à la dernière sauvegarde du journal. Une sauvegarde prise avec NO_TRUNCATE peut contenir des métadonnées incomplètes ; exécutez DBCC CHECKDB après la restauration. Une sauvegarde de fin du journal n'est pas possible en récupération SIMPLE.

Ouvrir dans DBAtlas →

Voir aussi