none
Transaction Log verkleinern RRS feed

  • Frage

  • Hallo,

    seit der Umstellung auf SQL 2008 wachsen bei meinen Datenbanken die Transaction Logs ohne weider kleiner zu werden. Unter SQL 2000 war dies über Jahre nie eine Problem.

    Nun aber beansprucht eine Datenbank fon 80 MB etwa 40 GB Transaction Log, eine andere ähnlicher Größe sogar 90 GB!

    Die erste der beiden habe ich gelöscht und vom Backup neu eingespielt, nur das bak file, keine Transaction Backups und SQL 2008 erstellt wieder eine 40 GB große Transaction Log Datei obwohl die Backup Datei nur etwa 70 MB groß ist.

    Ich nehme an, diese Transaction Log Datei ist nun eine leere Datei, die lediglich den Speicherplatz reserviert?

    Aber, wie bekomme ich das wieder klein?

    Vielen Dank.

    Thomas Schreiber-Ringel

    Mittwoch, 4. Juli 2012 11:47

Antworten

  • Hallo Thomas,

    entweder Du sicherst die Log Files regelmäßig; nach der Sicherung wird der Platz wieder frei gegeben.

    Oder Du stellst das Recovery Model von "Full" auf "Simple" um, dann wird das Log nur noch während der Transactionen genutzt und anschließend wieder frei gegeben; dann hast Du aber keine Möglichkeit zur Time-In-Point Recovery.


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing

    • Als Antwort vorgeschlagen FZB Mittwoch, 4. Juli 2012 13:37
    • Als Antwort markiert shewanja Mittwoch, 4. Juli 2012 17:53
    Mittwoch, 4. Juli 2012 11:57
  • Hallo Thomas,
    im Objekt-Explorer des Management Studios die rechte Maustaste auf die Datenbank:
    - Tasks
    - Verkleinern
    - Dateien
    - Protokoll

    Dann das LDF verkleinern und Sicherungen wie von Olaf bereits beschrieben einrichten.
     Siehe außerdem diese Artikel:
    http://www.insidesql.org/blogs/cmu/sql_server/sichern-und-wiederherstellen-von-datenbanken

    http://www.insidesql.org/blogs/frankkalis/2004/09/16/best-practice-fuer-log-files

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP
    www.insidesql.org/blogs/cmu

    • Als Antwort markiert shewanja Mittwoch, 4. Juli 2012 17:53
    Mittwoch, 4. Juli 2012 13:53
    Beantworter

Alle Antworten

  • Hallo Thomas,

    entweder Du sicherst die Log Files regelmäßig; nach der Sicherung wird der Platz wieder frei gegeben.

    Oder Du stellst das Recovery Model von "Full" auf "Simple" um, dann wird das Log nur noch während der Transactionen genutzt und anschließend wieder frei gegeben; dann hast Du aber keine Möglichkeit zur Time-In-Point Recovery.


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing

    • Als Antwort vorgeschlagen FZB Mittwoch, 4. Juli 2012 13:37
    • Als Antwort markiert shewanja Mittwoch, 4. Juli 2012 17:53
    Mittwoch, 4. Juli 2012 11:57
  • Hallo Thomas,
    im Objekt-Explorer des Management Studios die rechte Maustaste auf die Datenbank:
    - Tasks
    - Verkleinern
    - Dateien
    - Protokoll

    Dann das LDF verkleinern und Sicherungen wie von Olaf bereits beschrieben einrichten.
     Siehe außerdem diese Artikel:
    http://www.insidesql.org/blogs/cmu/sql_server/sichern-und-wiederherstellen-von-datenbanken

    http://www.insidesql.org/blogs/frankkalis/2004/09/16/best-practice-fuer-log-files

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP
    www.insidesql.org/blogs/cmu

    • Als Antwort markiert shewanja Mittwoch, 4. Juli 2012 17:53
    Mittwoch, 4. Juli 2012 13:53
    Beantworter
  • Hallo Olaf, hallo Christoph,

    zuersteinmal ganz herzlichen Dank für die schnelle Antwort ! :-))

    Mein Fehler war offensichtlich bei nEinrichten des Wartungsplans zwar eine Sicherung der Datenbank, nicht aber des Transaktionsprotokolls vorzunehmen. Beim Anlegen des Tasks "Datenbank sichern" habe ich den Sicherungstyp "vollständig" gewählt und nahm an, damit würden Datenbanken und Logfiles gesichert.

    Nun habe ich einen weiteren Task angelegt mit der Sicherung der TLF. Allerdings war danach noch nichts gelöscht. Erst das Ausführen des Tasks Datenbank verkleinern brachte hier den Erfolg.

    Der Wartungsplan läuft aktuell noch, bei den beiden Datenbanken um die es mir ging hat es aber funktioniert. Ich gebe auf jeden Fall morgen noch Bescheid, wenn alles abgeschlossen ist.

    Herzliche Grüße

    Thomas

    P.S. Was würde eigentlich passieren, wenn man versucht die TLF unter Windows einfach zu löschen, ggf. bei heruntergefahrenem Server?

    Mittwoch, 4. Juli 2012 18:01
  • P.S. Was würde eigentlich passieren, wenn man versucht die TLF unter Windows einfach zu löschen, ggf. bei heruntergefahrenem Server?

    Hallo Thomas,

    Du solltest besser nie SQL Server bezogene Aktionen am SQL Server vorbei durchzuführen; Du riskierst Datenverlust und sogar, das Du ihn nicht mehr starten kannst ... abgesehen davon, das man den SQL Server eh nur zum Patchen mal runter fährt, sonst lässt man ihn 24/7 laufen.

    Der SQL Server bietet alle Möglichkeiten zur Verwaltung und zur Wartung, die sollten immer als Mittel erster Wahl genutzt werden.


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing

    Mittwoch, 4. Juli 2012 18:17