Warum erhöht / verdoppelt sich die .bak-Dateigröße mit jeder aufeinanderfolgenden Sicherung auf SQL Server?


10

Ich führe eine einfache Datenbank unter SQL Server 2012 Express aus.

Gerade heute, wenn ich die Datenbank .baksichere, verdoppelt sich die Dateigröße gegenüber der vorherigen Sicherung wenige Minuten zuvor. Ich habe heute mehrere Sicherungen durchgeführt (über SQL Server Management Studio -> Sicherungstyp: voll), und mit jeder wird die .bakDatei weiter verdoppelt.

Wenn ich in SQL Server Mgmt Studio mit der rechten Maustaste auf meine Datenbank klicke -> 'Berichte' -> 'Ereignisse sichern und wiederherstellen' -> 'Erfolgreiche Sicherungsvorgänge' erweitern:

Der Bericht hier zeigt, dass die letzte Sicherungsgröße als 55 MB aufgezeichnet wurde, aber wenn ich zur eigentlichen .bakDatei gehe, sind es 260 MB. Jede andere Sicherung wurde heute ebenfalls mit einer Größe von 55 MB aufgezeichnet, während die entsprechenden .bakDateien um ein Vielfaches größer sind (und mit jeder Sicherungsoperation wachsen).

Was könnte schief gehen? Ich habe seitdem keine Änderungen an der Datenbank vorgenommen.

Antworten:


12

Die Sicherungsdatei enthält mehrere Kopien der Datenbank, da sie nicht bei jeder Sicherung "initialisiert" oder "formatiert" wird.

Gehen Sie im Dialogfeld "Datenbank sichern" zur Tabelle "Optionen" und wählen Sie "Alle vorhandenen Sicherungssätze überschreiben" aus:

Geben Sie hier die Bildbeschreibung ein


8

Ich gehe davon aus, dass Sie jedes Mal auf dieselbe Datei sichern. Es gibt eine Option für INIToder NOINITwenn Sie eine Sicherung ausführen. NOINIT(dies ist die Standardeinstellung) weist es an, der Datei nur eine zusätzliche Sicherung hinzuzufügen.

Pro BOL:

{NOINIT | DRIN }

Steuert, ob der Sicherungsvorgang an die vorhandenen Sicherungssätze auf dem Sicherungsmedium angehängt oder diese überschrieben wird. Standardmäßig wird an den neuesten Sicherungssatz auf dem Datenträger (NOINIT) angehängt.

Jedes Mal, wenn Sie Ihre 55-MB-Sicherung ausführen, wird die Datei ~ 55 MB größer.

Wenn Sie die INITKlausel in Ihren Sicherungsbefehl aufnehmen, wird die vorhandene Sicherung jedes Mal überschrieben.

Die andere Möglichkeit besteht natürlich darin, Ihre Backups jedes Mal in neuen Dateien auszuführen und die alten Dateien zu bereinigen. Dies ist häufig eine gute Idee, wenn eine der aktuellen Sicherungen fehlerhaft ist oder Sie den Verlauf wiederherstellen müssen.


2

Wenn Sie dies direkt in SQL tun, verwenden Sie den SQL Server Management Studio-Assistenten nicht. Sie müssen beim Sichern "NOINT" oder "INIT" angeben, um "Zur Datei hinzufügen" bzw. "Überschreiben" zu sagen.

Hier ist die SQL dafür

BACKUP DATABASE <data_base_name> TO DISK = <File_Path> WITH INIT
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.