none
Transaktionlogs werden nicht verkleinert SQL 2008 x64 RRS feed

  • Frage

  • ich habe gerade ein kleines Verständnissproblem und zugegebenermaßen auch noch nicht allzuviele Erfahrungem mit MS SQL 2008. Die Transaktionlogs werden nicht "geshrinkt".

    Des Status der MyDB ist u.a RECOVERY=FULL, IsAutoShrink, trotzdem werden die Backupdateien der Transaktionlogs immer größer und auch der Platz im Log wird nicht freigegeben (dbcc sqlperf(logspace)). Die Logs werden regelmäßig gesichert (dump transaction to disk), aber auch nach einem manuellen CHECKPOINT und einem Fulldump (dump database) werden die Logs nicht kliener. Mir ist klar, das der aktive Part nicht freigegeben werden kann. Aber laut dbcc opentran() sind keine offenen Transaktionen vorhanden.

    D.h. im Moment muss ich, um die Logs zu verkleinern, jedes Mal folgende Schritte ausführen:

    USE MyDB;
    GO
    ALTER DATABASE MyDB
    SET RECOVERY SIMPLE;
    GO
    DBCC SHRINKFILE (Log, TRUNCATEONLY);
    GO
    ALTER DATABASE MyDB
    SET RECOVERY FULL;
    GO

    Und danach muss natürlich wieder ein Full-Dump durchgeführt werden.

    Habe ich da irgendwas übersehen? Wie bekomme ich den inaktiven Part in Log wieder freigegeben?
    Hat eventell jemand einen Tip für mich, woran das liegen könnte bzw. wie  ich die Logs auch im normalen Betrieb wieder verkleinern kann?

    Gruss Jörg

    Donnerstag, 12. August 2010 09:56

Alle Antworten

  • Hallo Jörg,

    normalerweise sollte das LOG im normalen Betrieb, wenn es regelmäßig gesichert wird, nicht unmäßig wachsen, d.h. nicht mehr, als benötigt wird.

    Wie sicherst Du denn das LOG? Mit SQL-Server Bordmitteln? Nur dann ist gewährleistet, daß die abgeschlossenen Transaktionen als zu überschreiben gekennzeichnet werden.

    Ansonsten ist Dein Vorgehen für den Notfall ok.

    Donnerstag, 12. August 2010 10:09
  • Hallo Christa,

    Danke für die Antwort. Ja ich sicher ganz normal mittels SQL Befehlen:

    Backup LOG @bckdb To DISK=@bckfile       
    With Description ='@bckdb @bckmode TX Backup',        
    NoInit, NoSkip, Stats = 1       

    Backup DATABASE @bckdb To DISK=@bckfile       
    With Description ='@bckdb @bckmode TX Backup',        
    Init, NoSkip, Stats = 1       

    Allerdings hatte ich diese in einer SP eingebunden.  Testweise habe ich das "BACKUP LOG" jetzt einmal manuell ausgeführt und plötzlich wurde auch das Backupfile kleiner. So wie es sein soll. Daraufhin habe ich die SP gelöscht und nochmal neu angelegt (ohne den Code zu verändern) und jetzt funktioniert auf einmal auch das Sichern übder die SP und die Backupfiles wachsen auch nicht mehr. Ich verstehe es zwar nicht, aber solange es funktionert ...

    Auf alle Fälle vielen Dank für Deine Antwort und die damit verbundene Eingebung. Ich werde die Problematik mal weiter beobachten.

    Danke Jörg

     


    Gruss Jörg
    Donnerstag, 12. August 2010 13:02