2012-03-23 5 views
0

Ich habe kürzlich Tabellendaten aus einem Batch von Produktionsdatenbanken entfernt und die Datenbankdateien mithilfe der Funktion "Shrink File" in SSMS verkleinert. Einige der Datenbanken werden mehr als 50 GB verkleinern. Ich habe festgestellt, dass diese Prozesse sehr lange dauern und dass während dieses Prozesses keine Schaltfläche zum Abbrechen vorhanden ist. Ich verbinde mich remote über RDP mit allen Datenbankservern und kann nicht garantieren, dass sie während des Trim-Prozesses nicht aus- und wieder eingeschaltet werden.Unterbrechung eines Datenbank-Datei-Verkleinerungsprozesses in SSMS 2008

Wenn der Shrink-Prozess ausgeführt wird und der Server aus- und wieder eingeschaltet wird, kann es zu Datenbankbeschädigungen kommen?

Antwort

2

Ich denke, es hängt ganz davon ab, welche Seiten zum Zeitpunkt des Stromausfalls in Bewegung waren. Du kommst vielleicht in Ordnung, aber ich würde hier sicherlich nicht würfeln wollen, wenn es meine Daten wären.

Anstatt nur eine einzelne Verkleinerungsoperation auszuführen (und insbesondere statt die Benutzeroberfläche dafür zu verwenden), können Sie die Datei mit einem DBCC SHRINKFILE-Befehl jeweils um eine kleine Größe verkleinern. Da Sie mit dieser Option eine Zielgröße festlegen können, können Sie den Befehl wiederholt in kurzen Bursts ausführen.

Während dies Ihr Risiko für Korruption reduziert, kann es jedoch andere Schäden verursachen, z. zunehmende Fragmentierung. Sie erhalten möglicherweise bessere Ergebnisse aus dem Neuaufbau der Indizes und dann dann Ausführen einer Schrumpfdatei mit truncateonly. Dadurch wird das "Ende" der Datei gelöscht, nachdem die Neuerstellungen vermutlich alle Daten an den Anfang der Datei verschoben haben.

Eine noch bessere Lösung könnte das Hinzufügen einer zweiten Datendatei in einer eigenen Dateigruppe, das Neuerstellen aller Ihrer Indizes in der neuen Dateigruppe und das Verkleinern der primären Datei auf die Größe nur der System-/Metadatenobjekte reduzieren dort leben.