it-swarm.com.de

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

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

Erst heute, wenn ich die Datenbank sichere, verdoppelt sich die Dateigröße .bak 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 .bak - Datei 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 .bak - Datei gehe, sind es 260 MB. Jede andere Sicherung wurde heute ebenfalls mit einer Größe von 55 MB aufgezeichnet, während die entsprechenden .bak - Dateien 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.

9
full_prog_full

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

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

(enter image description here

12
Max Vernon

Ich gehe davon aus, dass Sie jedes Mal auf dieselbe Datei sichern. Es gibt eine Option für INIT oder NOINIT, wenn 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 | INIT}

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 Klausel INIT 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.

8
Kenneth Fisher

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
1