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.

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:

USE <DB-Name>;
GO

-- Das Log abschneiden, indem man das Wiederherstellungsmodell auf "einfach" ändert
ALTER DATABASE <DB-Name> 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