Vor einem Restore ein Tail-Log-Backup erstellen (NORECOVERY / NO_TRUNCATE)
SQL ServerRestore & RecoveryBefehl
-- 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.