Blog Article & Copyright by Lukas Hillesheim
Das Verkleinern des Logfiles ist ein gelegentlich auftretender administrativer Task bei der Verwaltung von SQL Server. Dass sich das Logfile in manchen Fällen nur noch unter Zuhilfenahme des SIMPLE Recovery Modes verkleinern läßt und dabei ein Problem für die Backup Chain auftritt, kann als Bug oder als lästige Verhaltensweise angesehen werden. Die zusätzliche Hürde beim Einsatz in einer Cluster Umgebung mit AlwaysOn Availability Group besteht darin, dass der Recovery Mode hier nicht auf SIMPLE gesetzt werden kann, ohne die Konfiguration des AON-Clusters zu resetten. Der nachfolgende Artikel zeigt eine Lösung für das Problem.
1. Test-Umgebung
Die AON-Test-Umgebung besteht aus einem Domain Controller und zwei Nodes, die Teil einer Availability Group namens "CLUS01" sind:
Die Datenbank [CLUS01] ist Teil von AON:
Die Tabelle [order] ist noch leer:
Das LDF File ist noch leer und hat seine initiale Ausgangs-Größe:
2. Vergrößerung des Logfiles
Sowohl auf NODE01, als auch auf NODE02 ist nach dem dem Einfügen von 500.000 Zeilen das LDF File auf der Festplatte gewachsen und sein Füllungsgrad beträgt nahezu 100%:
3. Die reguläre Logfile-Verkleinerung funktioniert nicht
Um das Logfile zu verkleinern, müssen normalerweise die Schritte aus A. und B. unternommen werden
A. Reguläre Schritte zur Verkleinerung des LDF - anwendbar in einer AON- und einer Nicht-AON-Umgebung:
- - 1. Sicherung des Logfiles
- - 2. Ausführen des Checkpoint-Prozesses mit dem Befehl CHECKPOINT
- - 3. Physische Verkleinerung des Logfiles mit DBCC SHRINKFILE(...)
B. Workaround - falls DBCC SHRINKFILE nicht den gewünschten Erfolg zeigt. Die Schritte sind nur anwendbar in einer Nicht-AON-Umgebung:
- - 1. Temporäres Wechseln in den Recovery Mode SIMPLE und zurück
- - 2. Vollständige Sicherung der Datenbank
- - 3. Optional: Sicherung des Logfiles
- - 4. Erneutes Ausführen von DBCC SHRINKFILE
In der Test-Umgebung werden die Schritte aus A. ausgeführt. Der letzte Befehl endet mit einem Warn-Hinweis. Dies kann sowohl in einer AON- und Nicht-AON-Umgebung gelegentlich passieren und macht die Schritte aus B. notwendig. Auf der Festplatte hat sich keine Änderung ergeben:
Ein Versuch, die Schritte aus B. zu unternehmen, endet wie erwartet mit einer Fehlermeldung. Die Datenbank [ClusDB01] kann nicht in den SIMPLE Recovery Mode geschaltet werden, weil sie Teil einer AON-Gruppe ist:
4. Sicherung auf ein NUL-Device
Statt temporär in den SIMPLE Mode zu switchen, um indirekt das Truncate einzuleiten, kann auch auf ein NUL-Device gesichert werden. Danach funktioniert der Shrink-Befehl. Auf beiden Knoten wird dadurch das LDF physisch verkleinert:
Bitte beachten Sie auch Folgendes:
- - Das Logfile ist - je nach Betrachtungsweise - sowohl durch den Recovery Mode Switch, als auch durch das Nul-Device-Backup beschädigt. Dadurch ist die Backup Chain unterbrochen. Vollständige Sicherungen, die vor der NUL-Device-Sicherung durchgeführt wurden, können nicht mehr für ein Point-In-Time Recovery verwendet werden. Dies gilt für den Fall, dass der Point-In-Time nach dem Recovery Mode Switch liegt
- - Um weitere Datenverluste zu vermeiden, muss unbedingt eine vollständige Sicherung durchgeführt werden
Die Vorgehensweise dieses Artikels ist weder von MS dokumentiert, noch in den Internet Communities. Sie wurde in meiner Test-Umgebung validiert. Bitte führen Sie eigene Tests in Ihrer Prod-Umgebung durch.