Ich habe nur noch 2 GB, daher muss ich diese Verlaufstabelle entfernen. Diese Tabelle ist jetzt leer, aber der Datenbankspeicherplatz wurde nicht freigegeben. Und die Datenbankdatei ist 320GB.
sql-server
sql-server-2012
truncate
Lucas Rodrigues Sena
quelle
quelle
Antworten:
Wenn Sie auf den tatsächlichen Verbrauch der Datenbankdatei auf dem Volume verweisen, wird dies von SQL Server nicht automatisch verarbeitet . Nur weil Sie Daten aus der Datenbank entfernt haben, bedeutet dies nicht, dass die Datenbankdateien nur auf die vorhandenen Daten verkleinert werden.
Was würden Sie werden suchen, wenn Sie haben Platz auf dem Datenträger zurückzugewinnen, wäre mit der bestimmten Datei schrumpfen
DBCC SHRINKFILE
. In Bezug auf diese Dokumentation sollten einige bewährte Methoden erwähnt werden:Beachten Sie auch:
Es gibt sicherlich ein paar Dinge zu beachten, und ich empfehle Ihnen, in Paul Randals Blog-Post nachzuschlagen, was passiert, wenn Sie diese Operation ausführen.
Der erste Schritt wäre auf jeden Fall, zu überprüfen, wie viel Speicherplatz und freier Speicherplatz Sie tatsächlich ersetzen können, sowie den belegten Speicherplatz in den Dateien:
quelle
Dies ist ein normales Verhalten, wenn Sie eine Tabelle abschneiden und dabei mehr als 128 Speicherbereiche als Per Books Online entfernen
Sie müssten warten und natürlich die Datei manuell verkleinern , um Speicherplatz freizugeben. Erwähnenswert ist auch, dass das Verkleinern eine logische Fragmentierung verursacht und vermieden werden sollte, es sei denn, Ihr Bedarf ist groß. Man müsste einigermaßen zwischen Schrumpfen und Fragmentieren ausbalancieren. Es ist besser, sich selbst zu fragen, ob ein Schrumpfen das Problem in Anbetracht des Szenarios, in dem die Daten sowieso wieder zunehmen, tatsächlich lösen würde.
Verwenden Sie die folgende Abfrage, um zu überprüfen, wie viel freier Speicherplatz in der Datenbank vorhanden ist
quelle
Zusätzlich zu den Antworten von Tom und Shanky funktioniert die DBCC SHRINKFILE möglicherweise nicht, wenn Ihre Datenbank LOB / BLOB-Daten enthält. In diesem Fall haben Sie zwei Möglichkeiten, je nachdem, ob Sie die Datenbank offline schalten können oder nicht. Wenn Sie die Datenbank offline schalten können, müssen Sie die Daten aus und wieder einkopieren, um den leeren Bereich zu entfernen. Sie können dies auf eine der folgenden Arten erreichen:
Wenn Sie die Datenbank nicht offline schalten können, können Sie den Befehl DBCC SHRINKFILE mit der Option EMPTYFILE verwenden .
Details zum Offline-Kopieren: http://support.microsoft.com/kb/324432/en-us
Aktuelle Informationen zur EMPTYFILE-Option http://msdn.microsoft.com/en-us/library/ms189493(v=sql.105).aspx
quelle