SQL Transaction Log File nachträglich verkleinern

Atroxy

Ensign
Registriert
Apr. 2009
Beiträge
191
Heya,

relativ einfache Frage: Ich möchte auf meinem Microsoft SQL Server 2005 die Transaction Log File (.ldf) verkleinern. Im Moment ist sie auf unbestimmte Größe ausgelegt und hat 8GB erreicht. Ich möchte sie jetzt auf 5GB verringern bekomme allerdings eine Fehlermeldung. Benutze SQL Server Management Studio und versuche unter Properties > Files > Maximum File Size auf 5000 MB zu begrenzen. Selbstverständlich kommt dann "MODIFY FILE failed. Size is greater than MAX SIZE." (Error:5040).

Was kann ich machen um die LDF zu verkleinern um die maximale Größe zu verringern. Problem ist, dass die Festplatte voll ist und ich eigentlich gerne wieder ein paar GB Puffer wieder hätte.

Danke für jegliche hilfe :-)
 
mein erster gedanke war, alte logs löschen bis die datei die gewünschte größe erreicht hat, dann maximum file size auf 5Gb begrenzen
 
Jo, Datenbank runterfahren (evt. PC runterfahren), File löschen, size setzen und alles wird gut.
 
Wenn man sich die SQL DB ordentlich zerpflücken will kann man den Ratschlägen hier gerne folgen.

Zum einen (mal ganz einfach): Das Transaction Log ist immer so gross, wie Transaktionen seit dem letzten Backup des Transaction Log eben enthalten sind.

Steht das Recovery Model der DB nicht auf Simple muss das T-Log seperat gesichert werden, danach kann man es (auch automatisch) verkleinern (lassen). Je nach verwendetem Backup Programm und SQL Agent ist dazu lediglich ein Haken zu setzen oder aber im SQL Management Studio/Enterprise Manager die entsprechende Shrink Aktion auszuwählen und einzurichten (das ist dort eigentlich recht selbsterklärend, wenn man einen Backupjob einrichtet).

Wenn möglich kann man einfach das Recovery Model auch auf Simple setzen (in den Eigenschaften der DB), dann kann man auch den Parameter Auto Shrink in den Eigenschaften setzen, dann wird das T-Log erst gar nicht 5 GB.

Setzt man hier einfach eine Grössenbeschränkung bleibt der SQL Server einfach stehen und lässt sich nicht mehr gross benutzen, wenn das T-Log die entsprechende Grösse erreicht hat.

Grüsse

Gulp
 
oder auch ein Backup (Wiederherstellungsmodell: Einfach) machen und dann über Tasks -> Verkleinern das Log verkleinern. Danach kannst du auch die max. Größe entsperchend runterstellen.
 
Wenn ich es richtig verstehe soll ich die ganze Transaction Log File löschen und neu anlegen mit der verringerten Größe? Kann ich die bestehende ldf nicht manuell verkleinern in dem ich beispielweise alle Transaktionen von 2010 lösche, und falls dies geht, wie führe ich dies durch?
 
transaction log file einfach löschen ist gar keine gute Idee...was stört dich denn an den beiden Lösungen von Gulp und mir?
 
@redasurc: Hatte wohl zeitgleich mit euch angefangen zu schreiben nur etwas später abgeschickt, sodass ich es gar mehr gelesen habe.

Eine letzte Frage, da ich mir jetzt unsicher bin. Wenn ich die TLF begrenze, was genau für eventuelle Nachteile habe ich denn?
 
Wenn Du die Grösse des TLF begrenzt, bleibt der SQL Server funktionslos stehen, wenn die konfigurierte Grösse erreicht wird (das gilt analog für die manuelle Grössenbeschränkung des DB-Files) und das TLF keine leeren Bereiche aufweist. (Kleiner Tip: Auch wenn ein TLF 3 GB groß ist, müssen da ja keine 3 GB Inhalt im File sein, nach einem Commit und/oder Backup werden abgeschlossene Transaktionen aus dem TLF entfernt, somit bleiben freie Bereiche für neue Transaktionen.)

Üblicherweise wird aber die Grössenverwaltung des TLF vom kundigen Administrator über ein Backup und den entsprechenden weiterführenden Aktionen (DB-File und TLF Verkleinerung über den Wartungsplan oder Autoshrink bei entsprechender Wahl des Recoverymodels/Wiederherstellungsmodells) geregelt.

Grüsse

Gulp
 
Danke allen Beteiligten für die hilfreichen Antworten und danke redasurc für den Link, sieht der umfassend aus. Thema ist hiermit für beendet :-)
 
Zurück
Oben