Der Hauptunterschied zwischen vollständigen und Nur-Kopie-Sicherungen besteht darin, ob die LSN (Log Sequence Number) und insbesondere die LSN DatabaseBackupLSN
aktualisiert werden.
Wenn Sie eine vollständige Sicherung erstellen, DatabaseBackupLSN
wird die aktualisiert. Wenn Sie nach der vollständigen Sicherung eine differenzielle Sicherung erstellen, hat diese Sicherung eine, DatabaseBackupLSN
die der vollständigen Sicherung entspricht, und daher kann SQL die beiden miteinander verknüpfen (z. B. weiß es von diesen LSNs, dass der Diff der vollständigen Sicherung gefolgt ist).
Das Problem tritt auf, wenn geplante Sicherungen ausgeführt werden, sodass Sie zunächst eine vollständige Sicherung und dann eine Folge von Differentials ausführen. Wenn Sie manuell eine vollständige Sicherung erstellen, wird die LSN aktualisiert, und ab diesem Zeitpunkt verweist jede differenzielle Sicherung, die Sie über eine geplante Sicherung erstellen, auf die neue LSN, die nicht die ursprüngliche ist. Wenn eine Wiederherstellung erforderlich ist, können Sie Ihre geplante vollständige Sicherung wiederherstellen. Wenn Sie jedoch nach dem manuellen Auftrag versuchen, eine der differenziellen Sicherungen wiederherzustellen, schlägt dies fehl, da die LSNs nicht mehr übereinstimmen.
Bei einer Nur-Kopie-Sicherung wird die nicht berührt DatabaseBackupLSN
, und als solche wird diese Sicherungskette nicht unterbrochen.
Es gibt eine gute Beschreibung des Problems und warum so viele Leute es in Breaking the Backup Chain - REDUX (oder Eating Crow) von Michael K. Campbell missverstehen , das gute visuelle Anleitungen wie diese enthält:
Eine gute Erklärung der vier verschiedenen LSNs und ihrer Verwendung finden Sie unter Grundlegendes zu SQL Server-Protokollfolgenummern für Sicherungen von Simon Liew.
Sie können das Problem vermeiden, indem Sie nicht mehr als eine Aufgabe für Standardsicherungen einer Datenbank ausführen. Alle Ad-hoc- oder sekundären Sicherungen sollten mit der Option Nur-Kopie durchgeführt werden. Ausführliche Informationen finden Sie unter Nur-Kopie-Sicherungen (SQL Server). Grundsätzlich verwenden Sie jedoch die Option "Nur-Kopie-Sicherung" in SSMS über T-SQL, das WITH COPY_ONLY
im Befehl angegeben ist Oder verwenden Sie mit PowerShell den -CopyOnly
Parameter.