Wir haben eine BAK-Datei von einem Kunden, die wir zur Problemermittlung an unsere Entwicklerbüros weitergeleitet haben. Das Backup hat derzeit 25 GB und die wiederhergestellte Datenbank hat ungefähr die gleiche Größe, benötigt jedoch 100 GB, um wiederhergestellt zu werden. Ich glaube, das liegt daran, dass die Datenbank so eingerichtet ist, dass sie eine Transaktionsprotokollgröße von 75 GB hat. Nach der Wiederherstellung der Datenbank können wir die Protokolldatei verkleinern. Gibt es eine Möglichkeit, dies bei der Wiederherstellung zu tun?
sql-server
sql-server-2005
backup
restore
Adam Butler
quelle
quelle
Antworten:
Es gibt keine Möglichkeit, das Backup als Teil des Wiederherstellungsprozesses zu verkleinern. Die wiederhergestellte Datenbank muss genau wie die Quelldatenbank aussehen, mit der einzigen Ausnahme, dass Sie die Laufwerksbuchstaben und Ordner ändern können.
quelle
Es gibt einen Hack, den Sie niemals in einer Live-Umgebung ausführen sollten, wenn der Speicherplatz begrenzt ist, indem Sie die Protokolldatei in einem komprimierten Ordner wiederherstellen. Wenn Sie dies versuchen, indem Sie einen vorhandenen Ordner komprimieren und wiederherstellen, wird dies zu einem Fehler führen, sodass Sie mit einem symbolischen Link cheaten müssen.
D:\LogCompressed\
Erstellen Sie eine symbolische Verknüpfung zum komprimierten Ordner
mklink /D /J D:\Log\ D:\LogCompressed\
Stellen Sie Ihre Datenbank mit der ldf-Datei wieder her, die auf zeigt
D:\Log\
Verkleinern Sie die Protokolldatei auf eine geeignete Größe
Trennen Sie die Datenbank, verschieben Sie die Protokolldatei in einen nicht komprimierten Ordner und hängen Sie sie an
Es ist schmutzig, es betrügt, macht es nie live , aber es funktioniert. Ein schneller Test einer neu erstellten Datenbank mit einer 32-MB-Protokolldatei zeigt, dass sie beim Komprimieren 330 KB auf der Festplatte belegt, den Ordner dekomprimiert und auf der Festplatte wieder 32 MB groß ist.
quelle
Ich glaube, dass der Grund, warum Ihr Backup 25 GB beträgt und die wiederhergestellte Datenbank 100 GB beträgt, nicht in Ihrem Transaktionsprotokoll liegt. Ich vermute, Ihre Datenbankdateien haben 100 GB zugewiesenen Speicherplatz und es befinden sich 25 GB tatsächliche Daten in der Datenbank.
Es gibt einen Unterschied zwischen dem zugewiesenen Datenbankdateibereich und dem genutzten Datenbereich . In diesem Fall beträgt die erstere 100 GB und die letztere 25 GB.
quelle