|
SQL Server -
SQL 2005 Administration
|
|
Geschrieben von: Fumus
|
|
Freitag, 18. Juli 2008 um 14:14 |
|
Eine der meist nachgefragten Problemlösungen dreht sich um das Transaktionsprotokoll: Das Protokoll ist zu groß und soll verkleinert werden. Aber wie geht das und worauf muss man achten. Mehr zu Wiederherstellungsmodellen und Verkleinern des Transaktionsprotokoll lesen Sie hier...
- Warum wird Transaktionsprotokoll größer?
Weil sie es nicht oft genug sichern (evtl gar nicht)! Bei sehr vielen Datenmanipulationen (inserts, Updates, Delets) wie bspw. Meßdatenerfassung, kann das Protokoll stark anwachsen. Je nach Wiederherstellungsmodell mal mehr mal weniger.
- Wie wird die Protokollierung beeinflusst?
Kontrollieren Sie mal das Wiederherstellungsmodell (Optionen in den Eigenschaften der Datenbank). Im Modus Vollständig werden im Gegensatz zu Massenprotokolliert oder Einfach alle Vorgänge vollständig protokolliert, während im Modus massenprotokolliert Masseneinfügeoperationen oder auch Indexerstellung nur minimal protkolliert werden. Der Modus Einfach protokolliert nur wenig. Im Prinzip nur diejenigen Dinge, die zum Wiederherstellen der Daten notwendig sind (siehe auch -> Stromausfall; zerissene Seiten).
Im Modus Einfach ist eine Sicherung des Transaktionsprotkolls nicht mölich, da alle Transaktionen nach dem Commit aus dem Transaktionsprotokoll abgeschnitten werden. Eine Sicherung wäre demnach sinnlos.
- Wie kann das Transaktionsprotokoll verkleinert werden?
Das Protkoll kann nur um den freien Teil innerhalb des Protokolls verkleinert werden. Um freien Platz innerhalb des Protokolls zu gewinnen, müssen Sie es sichern. Die abgeschlossenen (committet) Transaktionen werden dadurch abgeschnitten. Nun können Sie entweder über rechten Mausklick auf die DB, dann "Alle Tasks" die DB bzw. Dateien verkleinern. Das entprechende Kommandos dazu lauten:
DBCC SHRINKDATABASE
DBCC SHRINKFILE
- TIPP
Achten Sie darauf trotzdem genügen Platz übrig zu lassen, da ein Vergrößern der DB oder Transaktionsprotokolls für die Performance pures Gift bedeutet.
***
Von einem automatischen Verkleinern rate ich ab. Das geschieht nach Neustart bzw. nach längerer Leerlaufzeit. Der freie Platz wird dabei auf 25% festgelegt. Leider kann der Verkleinerungsprozeß genau dann beginnen, wenn man die DB benötigt wird.
***
Falls eine Festplattenplatz schon voll sein sollte, könnten sie auch ein weiteres Logfile auf einen zweiten Laufwerk anlegen.
***
Hart, aber wirksam:
BACKUP LOG NO_LOG (oder TRUNCATE_ONLY)
Dadurch schneiden Sie den inaktiven Teil des Prokotokolls ab und werfen Ihn bildlich gesagt "ins NIrvana". Wenn sie das gemacht haben, sollten Sie schleunigst ein Vollständiges Backup machen.
|
|
LAST_UPDATED2 |