it-swarm.com.de

Ist es möglich, SQL-Server-Bak wiederherzustellen und gleichzeitig das Protokoll zu verkleinern?

Wir haben eine Bak-Datei von einem Kunden, die wir zur Problemuntersuchung an unsere Entwicklerbüros weitergeleitet haben. Die Sicherung ist derzeit 25 GB groß und die wiederhergestellte Datenbank hat ungefähr die gleiche Größe. Für die Wiederherstellung sind jedoch 100 GB erforderlich. Ich glaube, das liegt daran, dass die Datenbank für eine Transaktionsprotokollgröße von 75 GB eingerichtet ist. Nach dem Wiederherstellen der Datenbank können wir die Protokolldatei verkleinern. Gibt es eine Möglichkeit, dies bei der Wiederherstellung zu tun?

26
Adam Butler

Es gibt keine Möglichkeit, die Sicherung 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.

16
mrdenny

Es gibt einen mach das nie in einer Live-Umgebung Hack, den du verwenden kannst, wenn der Speicherplatz begrenzt ist, indem du die Protokolldatei in einem komprimierten Ordner wiederherstellst. Versuchen Sie dies, indem Sie einen vorhandenen Ordner komprimieren und in ihn wiederherstellen. Dies führt zu einem Fehler. Sie müssen also mit einem symbolischen Link betrügen.

  1. Erstellen Sie einen komprimierten Ordner D:\LogCompressed\
  2. Erstellen Sie einen symbolischen Link zum komprimierten Ordner mklink /D /J D:\Log\ D:\LogCompressed\

  3. Stellen Sie Ihre Datenbank wieder her, wobei die ldf-Datei auf D:\Log\ Zeigt.

  4. Verkleinern Sie die Protokolldatei auf eine geeignete Größe

  5. Trennen Sie die Datenbank, verschieben Sie die Protokolldatei in einen unkomprimierten Ordner und hängen Sie sie an

Es ist schmutzig, es betrügt, TUN SIE ES NIEMALS 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.

34

Ich glaube, dass der Grund für Ihre Sicherung 25 GB und die wiederhergestellte Datenbank 100 GB ist nicht aufgrund Ihres Transaktionsprotokolls. Ich vermute, Ihre Datenbankdateien haben 100 GB zugewiesenen Speicherplatz und die Datenbank enthält 25 GB tatsächliche Daten.

Es gibt einen Unterschied zwischen zugewiesener Datenbankdateibereich und verwendeter Datenbereich. In diesem Fall beträgt der erstere 100 GB und der letztere 25 GB.

9
Thomas Stringer