Standardmäßig ist das Wiederherstellungsmodell von neu angelegten Datenbanken auf “Vollständig” (Full) gesetzt. Allerdings wird dann bei einer Sicherung nicht das Transaktionsprotokoll verkleinert. Das wird nur bei einem Transaktionsprotokoll-Backup gemacht.

SQL Server

Wird also kein Transaktionsprotokoll-Backup gemacht, wächst das Logfile bis zur höchst definierten Obergrenze - und dann kann schnell mal die Platte vollaufen.

Deshalb sollte man bei unkritischeren Datenbanken die man NICHT über das Transaktions-Log wiederherstellen muss, eher das “einfache” (Simple) Wiederherstellungsmodell wählen.

Hat man bei seiner Datenbank aber das vollständige Wiederherstellungsmodell gewählt und möchte nun sein Transaktions-Log verkleinern (z.B. weil die HDD voll gelaufen ist), hilft folgende Vorgehensweise:

Transaktions-Protokoll verkleinern

  • Ein vollständiges Backup der Datenbank erstellen
  • Nun eine neue SQL-Abfrage starten und das Protokoll verkleinern:

USE <DB-Name>;
GO
-- Das Log abschneiden, indem man das Wiederherstellungsmodell auf “einfach” ändert
ALTER DATABASE SET RECOVERY SIMPLE;
GO
-- Das abgeschnittene Logfile auf 1 MB verkleinern
DBCC SHRINKFILE (<DB Log File Name>, 1); GO
-- Das Wiederherstellungsmodell wieder zurücksetzen (sofern man das denn möchte)
ALTER DATABASE <DB Name> SET RECOVERY FULL;
GO