PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SQL Transaction Log File nachträglich verkleinern



Atroxy
13.03.2012, 15:24
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 :-)

Vekko
13.03.2012, 15:31
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

r0b0t
13.03.2012, 15:34
Jo, Datenbank runterfahren (evt. PC runterfahren), File löschen, size setzen und alles wird gut.

Gulp
13.03.2012, 15:51
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

redasurc
13.03.2012, 15:52
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.

Atroxy
13.03.2012, 15:54
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?

redasurc
13.03.2012, 16:21
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?

Atroxy
14.03.2012, 21:28
@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?

redasurc
15.03.2012, 11:51
Google hat mir dieses PDF gezeigt, wo die Logfile Thematik beschrieben wird:
www.trivadis.com/uploads/tx_cabagdownloadarea/SQL_Server_Logfile_handling.pdf

Hilft dir sicherlich um die Funktionsweise von Lgs zu verstehen.

Gulp
15.03.2012, 12:01
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

Atroxy
15.03.2012, 12:31
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 :-)