Abschneiden einer vollen Protokoll Datei in der SQL-Server Datenbank

Martin Richter
17.08.2011 15:59
Beschreibung:

Wenn die Datenbank Protokolldatei nicht regelmäßig gesichert wird, dann wächst diese so lange bis der gesamte Festplattenplatz aufgebraucht ist. Die Folge ist oft, dass die Datenbank nicht einmal mehr gesichert werden kann.

Erst durch die vollständige Sicherung der Protokoll Dateien kann auch die Protokolldatei wieder verkleinert werden, oder zumindest der Platz in der Protokolldatei wiederverwendet werden.

Eigentliche Ursache ist in den meisten Fällen die falsche Wahl der Backup Strategie für die SQL Server Daten. Hier ist besonders darauf zu achten, dass das Backup im SQL-Server festgelegt werden muss. Es ist ein weit verbreiteter Irrtum anzunehmen, dass ein Datei-Backup eines Rechners alle SQL-Daten einschließt. Dies kann sein, muss aber nicht. Besonders ersetzt ein Dateibackup kein Datenbank oder Protokolldatei Backup.

Für Notfälle, bei denen jedoch jede Manövrierfähigkeit fehlt und man keinerlei Sicherungsmöglichkeiten mehr hat ist es aber auch möglich die Protokolldatei sofort abzuscheiden.

Dies sollte aber nur im letzten Notfall gemacht werden, wenn der normale Weg über eine Sicherung nicht mehr möglich ist.

Im Anschluss an das Abschneiden der Protokolldatei sollte immer ein volles Datenbankbackup durchgeführt werden.

Vorgehensweise MS-SQL Server 2000+2005: 

Über das SQL Management Studio, den SQL Query Analyzer, osql bzw. sqlcmd auf der Befehlszeile kann der folgende Befehl die Transaktionsdatei abschneiden:

DUMP TRANSACTION [Datenbankname] WITH NO_LOG

Dieser Befehl setzt nur intern die Protokolldatei zurück. Der Plattenplatz wird hierdurch noch nicht freigegeben.

Vorgehensweise MS-SQL Server 2008: 

In den MS-SQL Server Versionen ab 2008 gibt es keine direkte Möglichkeit mehr die Protokolldatei abzuschneiden, der DUMP Befehl wurde entfernt. Hier hilft es nur die Backup-Strategie für die Datenbank auf Einfach zu setzen.

ALTER DATABASE [Datenbankname] SET RECOVERY SIMPLE

Setzt nur intern die Protokolldatei zurück. Platenplatz wird hierdurch noch nicht frei. 

ACHTUNG: Dieses Vorgehen durchbricht evtl. aktuelle eingestellte Regeln für die gewählte Backupstrategie. Im Anschluss an das Abschneiden und verkleinern der Datenbank sollte in jedem Fall die korrekte gewünschte Backup-Strategie eingestellt werden und ein Datenbank Backup durchgeführt werden.

Freigeben des Plattenplatzes bei allen MS_SQL Server Versionen:

Der freigewordene Speicherplatz kann freigeben werden durch den Befehl:

DBCC SHRINKDATABASE('Datenbankname', 5,  TRUNCATEONLY) 

Die 5 in der Anweisung gibt an wieviel Prozent des Volumens intern als freier Speicher in den Dateien verbleiben sollen. Es kann sein, DBCC SHRINKDATABASE die Speicherplatz der Datenbankdatei nicht effektiv freigeben kann, weil der freie Platz nicht am Ende der Datenbank liegt.

Tags: Datenbank, SQL
Durchschnittliche Bewertung: 0 (0 Abstimmungen)

Kommentieren nicht möglich