Logo faq-o-matic.net
Logo faq-o-matic.net

SQL Server: Transaktionsprotokoll verkleinern

von veröffentlicht am27. August 2014, 06:14 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: SQL Server, Troubleshooting   Translate with Google Translate Translate EN   Die angezeigte Seite drucken

SQL Server verwendet für jede Datenbank (mindestens) zwei Dateien: Eine Daten-Datei und eine Transaktionsprotokoll-Datei. Warum das so ist und warum ein falscher Umgang mit diesen Dateien zu schweren Fehlern führen kann, beschreibt dieser Artikel:

[SQL Server: Wie Datenablage, Backup und Recovery funktionieren | faq-o-matic.net]
http://www.faq-o-matic.net/2011/01/03/sql-server-wie-datenablage-backup-und-recovery-funktionieren/

Das Transaktionsprotokoll ist zu groß geworden

Es kommt bei Kunden immer wieder vor, dass die Transaktionsprotokolle so stark anwachsen, dass die gesamte Festplatte vollläuft. SQL Server hat dann keinen Speicherplatz mehr und nimmt die betreffende Datenbank offline. Es kann auch noch schlimmer kommen, wenn die Dateien auf dem Systemlaufwerk liegen – dann kann durchaus auch Windows insgesamt die Luft ausgehen.

So etwas liegt fast immer daran, dass die Datenbank-Optionen und das Backup der Datenbank nicht zueinander passen – siehe den oben verlinkten Artikel.

Das Transaktionsprotokoll verkleinern

Um eine stark angewachsene Transaktionsprotokoll-Datei zu verkleinern, kann man folgenden Weg gehen. Vorsicht, dazu ist temporär ausreichend Speicherplatz nötig! Wenn die betreffende Platte also schon voll ist, kann es sein, dass das Verfahren nicht funktioniert. Dann muss man erst Platz schaffen oder ein „destruktives“ Verfahren wählen (beschreiben wir demnächst in einem separaten Artikel).

Als erstes fertigt man für die betreffende Datenbank ein Backup des Transaktionsprotokolls an. Das kann man über das GUI machen – im Wesentlichen so:

  • Rechtsklick auf die Datenbank, Sichern
  • Den Sicherungstyp auf „Transaktionsprotokoll“ umstellen
  • Unten als Sicherungsziel eine Festplattendatei angeben. Die muss auf einem Laufwerk liegen, auf dem Schreibzugriff besteht und auf dem genügend Platz frei ist.
  • Die Sicherung ausführen.

Mit einem SQL-Kommando kann man das auch tun, das geht so:

BACKUP LOG Name_der_Datenbank TO DISK='X:\Pfad\Dateiname.trn'

Dadurch ändert sich an der Dateigröße noch nichts. Daher muss man als nächstes SQL Server anweisen, die Datei zu verkleinern. Im GUI:

  • Rechtsklick auf die Datenbank, Tasks, Verkleinern, Dateien
  • Als Dateityp „Protokoll“ auswählen
  • Die Option zum Freigeben von Speicherplatz auswählen
  • Ausführen

Das SQL-Kommando dazu lautet alternativ:

DBCC SHRINKFILE (Name_der_logischen_Protokolldatei)

Dabei ist in diesem Kommando der Name der logischen Protokolldatei nicht identisch mit dem Namen im Dateisystem. Man bekommt den Namen mit folgendem Kommando angezeigt (das man sinnvollerweise als erstes ausführt):

EXEC sp_helpdb Name_der_Datenbank

Manchmal ist ein zweiter Durchgang nötig

Nach diesem Vorgang im Explorer prüfen, ob die Datei kleiner geworden ist. Manchmal ist das noch nicht der Fall. Dann muss man die eben beschriebenen Schritte (erst Transaktionsprotokoll sichern, dann Datei verkleinern) ein zweites Mal ausführen. Kein Witz, das ist wirklich oft nötig, weil manchmal SQL Server noch zusätzliche Verwaltungsarbeiten an der Datei ausführen muss, bevor das Verkleinern gelingt.

Nach dem zweiten Durchlauf sollte die Protokolldatei dann wesentlich kleiner sein (normalerweise über 95 Prozent kleiner).

Ergänzende Links

[Verkleinern des Transaktionsprotokolls]
http://technet.microsoft.com/de-de/library/ms178037%28v=SQL.105%29.aspx

[How to shrink the transaction log file in SQL Server 2005]
http://support.microsoft.com/kb/907511/en-us

© 2005-2017 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!