Verkleinern des Transaktionsprotokolls

Soll die physikalische Größe des Transaktionsprotokolls verringert werden, muss die Protokolldatei verkleinert werden. Beim Verkleinern des Transaktionsprotokolls wird die physikalische Größe des Protokolls reduziert, indem eine oder mehrere inaktive virtuelle Protokolldateien entfernt werden. Eine virtuelle Protokolldatei, die aktive Protokolldatensätze enthält, wird als aktive virtuelle Protokolldatei bezeichnet. Diese Datei ist Teil des logischen Protokolls und kann nicht entfernt werden. Weitere Informationen zu virtuellen Protokolldateien finden Sie unter Physische Architektur des Transaktionsprotokolls.

ms178037.note(de-de,SQL.90).gifHinweis:
Wenn das Transaktionsprotokoll schon seit längerer Zeit nicht mehr abgeschnitten wurde, kann die Protokolldatei möglicherweise erst verkleinert werden, wenn das Protokoll abgeschnitten wird. Weitere Informationen finden Sie unter Faktoren, die das Abschneiden des Protokolls verzögern können..

Vorgehensweise beim Verkleinern der Protokolldatei

Die virtuelle Protokolldatei ist die Einheit, die für Verkleinerungen verwendet wird. Falls Sie z. B. über eine Protokolldatei mit einer Größe von 600 MB verfügen, die in sechs virtuelle Protokolle mit je 100 MB aufgeteilt ist, kann die Größe der Protokolldatei nur in Schritten von 100 MB verringert werden. Die Dateigröße kann auf Größen von z. B. 500 MB oder 400 MB verringert werden, die Datei kann jedoch nicht auf Größen von z. B. 433 MB oder 525 MB verkleinert werden.

ms178037.note(de-de,SQL.90).gifHinweis:
Die Größe der virtuellen Protokolldatei wird dynamisch von Datenbankmodul ausgewählt, wenn Protokolldateien erstellt oder erweitert werden. Weitere Informationen finden Sie unter Physische Architektur des Transaktionsprotokolls.

Die aktuelle Größe einer Protokolldatei entspricht den Seiten, die von den virtuellen Protokolldateien verwendet werden. Virtuelle Protokolldateien, die einen Teil des logischen Protokolls enthalten, können nicht freigegeben werden. Wenn alle virtuellen Protokolldateien in einer Protokolldatei Teile des logischen Protokolls enthalten, kann die Datei nicht verkleinert werden. Eine Verkleinerung ist erst möglich, nachdem beim Abschneiden des Protokolls eine oder mehrere der virtuellen Protokolldateien als inaktiv markiert wurden.

Bei einem Dateiverkleinerungsvorgang können nur inaktive virtuelle Protokolldateien entfernt werden. Wenn keine Zielgröße angegeben wird, werden bei einem Dateiverkleinerungsvorgang alle inaktiven virtuellen Protokolldateien entfernt. Wird eine Zielgröße angegeben, werden bei einem Dateiverkleinerungsvorgang nur so viele inaktive virtuelle Protokolldateien entfernt, dass die Zielgröße annähernd erreicht, jedoch nicht unterschritten wird. Nach einer Verkleinerung ist die Protokolldatei normalerweise etwas größer als durch die Zielgröße vorgegeben, jedoch nie kleiner. Aufgrund der virtuellen Protokolldateien kann nicht genau vorhergesagt werden, um wie viel die Protokolldatei tatsächlich verkleinert wird.

Wenn eine Datei verkleinert wird, muss der freigegebene Speicherplatz vom Ende der Datei stammen. Wenn eine Transaktionsprotokolldatei verkleinert wird, werden ausreichend viele virtuelle Protokolldateien vom Ende der Protokolldatei freigegeben, um das Protokoll auf die Größe zu verkleinern, die vom Benutzer angefordert wird. Der durch den Benutzer angegebene target_size-Wert wird auf den nächsthöheren Grenzwert für virtuelle Protokolldateien gerundet. Wenn ein Benutzer z. B. einen target_size-Wert von 325 MB für die 600 MB umfassende Beispieldatei mit sechs 100 MB großen virtuellen Protokolldateien angibt, werden die beiden letzten virtuellen Protokolldateien entfernt, und die neue Dateigröße beträgt 400 MB.

Ein DBCC SHRINKDATABASE- oder DBCC SHRINKFILE-Vorgang versucht, die physikalische Protokolldatei sofort auf die angeforderte Größe zu verkleinern:

  • Wenn sich kein Teil des logischen Protokolls in den virtuellen Protokollen hinter dem Wert von target_size befindet, werden die virtuellen Protokolle hinter target_size freigegeben, und die erfolgreiche DBCC-Anweisung wird ohne Meldungen beendet.

Wenn sich ein Teil des logischen Protokolls in den virtuellen Protokollen hinter dem Wert von target_size befindet, gibt SQL Server-Datenbankmodul so viel Speicherplatz wie möglich frei und eine Informationsmeldung aus. Mithilfe dieser Meldung werden Sie darüber informiert, welche Aktionen Sie ausführen müssen, um das logische Protokoll aus den virtuellen Protokollen am Ende der Datei zu entfernen. Nachdem Sie diese Aktion durchgeführt haben, können Sie die DBCC-Anweisung erneut ausgeben, um den verbleibenden Speicherplatz freizugeben.

Angenommen, eine 600 MB umfassende Protokolldatei mit sechs virtuellen Protokolldateien verfügt über ein logisches Protokoll, das im virtuellen Protokoll 3 beginnt und im virtuellen Protokoll 4 endet, wenn Sie eine DBCC SHRINKFILE-Anweisung mit einem Wert für target_size von 275 MB ausführen:

Protokolldatei mit 6 virtuellen Protokolldateien vor dem Verkleinern

Die virtuellen Protokolldateien 5 und 6 werden sofort freigegeben, da sie keinen Teil des logischen Protokolls enthalten. Um jedoch den angegebenen target_size-Wert zu erreichen, müsste die virtuelle Protokolldatei 4 ebenfalls freigegeben werden. Dies ist jedoch nicht möglich, da es den abschließenden Teil des logischen Protokolls enthält. Nach der Freigabe der virtuellen Protokolldateien 5 und 6 füllt Datenbankmodul den verbleibenden Teil der virtuellen Protokolldatei 4 mit Pseudodatensätzen auf. Dadurch wird das Ende der Protokolldatei in das virtuelle Protokoll 1 verschoben. In den meisten Systemen wird für alle in der virtuellen Protokolldatei 4 beginnenden Transaktionen innerhalb von Sekunden ein Commit ausgeführt. Dies bedeutet, dass der gesamte aktive Teil des Protokolls in die virtuelle Protokolldatei 1 verschoben wird. Die Protokolldatei sieht nun wie folgt aus:

Protokolldatei wird auf 4 virtuelle Dateien verkleinert

Die DBCC SHRINKFILE-Anweisung gibt darüber hinaus eine Informationsmeldung aus, die besagt, dass nicht der gesamte angeforderte Speicherplatz freigegeben werden konnte und dass Sie eine BACKUP LOG-Anweisung ausführen können, um den verbleibenden Speicherplatz freizugeben. Nachdem der aktive Teil des Protokolls in die virtuelle Protokolldatei 1 verschoben wurde, wird mit einer BACKUP LOG-Anweisung das gesamte logische Protokoll abgeschnitten, das sich in der virtuellen Protokolldatei 4 befindet:

Protokolldateiergebnisse nach dem Abschneiden des Protokolls

Da die virtuelle Protokolldatei 4 keinen Teil des logischen Protokolls mehr enthält, können Sie nun die gleiche DBCC SHRINKFILE-Anweisung mit einem Wert für target_size von 275 MB ausführen. Die virtuelle Protokolldatei 4 wird anschließend freigegeben, und die Größe der physikalischen Protokolldatei wird auf die angeforderte Größe verringert.

ms178037.note(de-de,SQL.90).gifHinweis:
Bestimmte Faktoren, z. B. Transaktionen mit langer Ausführungszeit, können die virtuellen Protokolldateien für längere Zeit aktiv halten. Dies kann verhindern, dass das Protokoll im angeforderten Umfang oder überhaupt verkleinert wird. Weitere Informationen finden Sie unter Faktoren, die das Abschneiden des Protokolls verzögern können..

Wann wird das Protokoll verkleinert?

Das Protokoll kann verkleinert werden, während die Datenbank online ist. Unter folgenden Umständen wird die Größe von Protokolldateien physikalisch verringert:

  • Ein automatischer Verkleinerungsvorgang tritt auf.
  • Eine DBCC SHRINKFILE-Anweisung, die auf eine Protokolldatei verweist, wird ausgeführt.
  • Eine DBCC SHRINKDATABASE-Anweisung wird ausgeführt.

So verkleinern Sie eine Protokolldatei

So überwachen Sie Protokollverkleinerungsereignisse

So überwachen Sie die Verwendung von Protokollspeicherplatz

Siehe auch

Konzepte

Problembehandlung bei vollen Transaktionsprotokollen (Fehler 9002)
Festlegen von Datenbankoptionen
Verwenden von Transaktionsprotokollsicherungen
Kürzung des Transaktionsprotokolls

Andere Ressourcen

BACKUP (Transact-SQL)
DBCC SHRINKDATABASE (Transact-SQL)
DBCC SHRINKFILE (Transact-SQL)
Speicherplatzreservierung und -wiederverwendung

Hilfe und Informationen

Informationsquellen für SQL Server 2005