Oktober 1, 2009

SQL Transaktionsprotokoll verkleinern

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.



Über den Autor

Frank Piotrowsky ist IT-Consultant und beschäftigt sich mit der Automatisierung von Arbeitsprozessen, Netzwerkadministration und deren Automatisierung, sowie mit Software-Entwicklung, die ebenfalls in diese Richtung zielt. "Wenn der Computer die Arbeit für Sie erledigen kann, warum sollten Sie sie dann tun?" ist die Philosophie, die hinter dem Thema steckt.

Tags


Das könnte Sie auch interessieren:

Frank Piotrowsky

04/13/2020

Remotedesktopverbindung über Gateway


{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}
>