Dieser Artikel erklärt, wie Sie eine Microsoft SQL Server Transaktionsprotokoll-Datei verkleinern, auch wenn die Dateigröße (zuerst) nicht schrumpft.
Das Problem
Es kann passieren, dass Sie das Transaktionsprotokoll einer Microsoft SQL Server Datenbank nicht verkleinern können. Sie können zwar die Anzahl der Einträge, nicht aber die Dateigröße verringern.
Die Lösung
Der folgende Code verkleinert das Transaktionsprotokoll bis zur kleinst möglichen Größe:
USE DatabaseName
GO
DBCC SHRINKFILE(<TransactionLogName>, 1)
BACKUP LOG <DatabaseName> WITH TRUNCATE_ONLY
DBCC SHRINKFILE(<TransactionLogName>, 1)
GO
Update 2019
Änderung im Befehlssatz
Bei dem Backup-Befehl funktioniert „WITH TRUNCATE_ONLY“ nicht mehr (Seit SQL Server 2008).
Führen Sie stattdessen folgenden Code aus:
USE Datenbankname
GO
DBCC SHRINKFILE(Logischer_Transaktionsprotokoll_Name, 1)
BACKUP LOG Datenbankname TO DISK='X:\Pfad\Dateiname.trn'
DBCC SHRINKFILE(Logischer_Transaktionsprotokoll_Name, 1)
GO
Tool Tip
Führen Sie den Code 2 Mal aus. Der erste Durchlauf wird je nach Größe der Transaktionsprotokoll-Datei (sehr) lange dauern. Beim zweiten Durchlauf werden die Daten reorganisiert und aus dem Log entfernt, so dass dann das Transaktionsprotokoll schrumpft. Dieser Vorgang dauert in der Regel nur ein paar Sekunden.
Fehler: Log Full
Sollte die Ausführung des Skripts einen Fehler produzieren, der besagt, dass das Transaktionsprotokoll voll ist, dann kommentieren Sie die erste DBCC SHRINKFILE - Zeile aus und führen das Skript erneut aus.
Bevor das Transaktionsprotokoll geschrumpft werden kann, muss ein Backup davon existieren. Das ist der Grund, warum die Ausführung des ersten DBCC SHRINKFILE - Befehls einen Fehler produziert.