DBAtlas · Atlas für Datenbankbetrieb

Vor einem Restore ein Tail-Log-Backup erstellen (NORECOVERY / NO_TRUNCATE)

SQL ServerRestore & Recovery

Befehl

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

Was es tut

Sichert den seit dem letzten Log-Backup geschriebenen Teil des Logs (den Tail), damit die Restore-Kette bis zum Zeitpunkt des Ausfalls reicht und die Transaktionen der letzten Minuten nicht verloren gehen.

Wann einsetzen

Vor einem Restore über dieselbe Datenbank, wenn die Platte der Datendatei ausfällt, oder beim finalen Cutover einer Migration.

Vorsicht

NORECOVERY versetzt die Datenbank in RESTORING und beendet den Benutzerzugriff; nicht auf der falschen Datenbank ausführen. Ein Restore WITH REPLACE ohne Tail-Log-Backup verwirft die Transaktionen nach dem letzten Log-Backup endgültig. Ein mit NO_TRUNCATE erstelltes Backup kann unvollständige Metadaten enthalten; führe nach dem Restore DBCC CHECKDB aus. Im Recovery Model SIMPLE ist kein Tail-Log-Backup möglich.

In DBAtlas öffnen →

Verwandte Einträge