SQL Server-sys.Datenbanken log_reuse_wait-Spalte Frage
War ich untersuchen das rasante Wachstum der SQL Server 2005-Transaktion-log, wenn ich fand, dass die Transaktionsprotokolle nur abschneiden, richtig - wenn das sys.Datenbanken "log_reuse_wait-Spalte" - Spalte wird auf 0 gesetzt - was bedeutet, dass nichts ist, halten Sie das Transaktionsprotokoll von Wiederverwendung vorhandener Raum.
Eines Tages, wenn ich die Absicht backup/truncate log-Datei, fand ich, dass in dieser Spalte hatte eine 4, oder ACTIVE_TRANSACTION Los in der tempdb-Datenbank. Dann habe ich mir für alle offenen Transaktionen mithilfe von DBCC OPENTRAN('tempdb'), und die open_tran Spalte der sysprocesses. Das Ergebnis war, dass ich finden konnte, keine aktiven Transaktionen irgendwo im system.
Sind die Einstellungen in der log_reuse_wait-Spalte-Spalte genau? Gibt es Transaktionen, die nicht nachweisbar sind mit den Methoden die ich oben beschrieben habe? Ich bin einfach etwas fehlt offensichtlich?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß immer noch nicht, warum ich sah die ACTIVE_TRANSACTION in der sys.Datenbanken der log_reuse_wait_desc-Spalte - als es noch keine Transaktionen ausgeführt, sondern meine spätere Erfahrung zeigt, dass der log_reuse_wait-Spalte-Spalte für die tempdb-änderungen aus Gründen, die nicht sehr klar, und für meine Zwecke, nicht sehr relevant. Auch fand ich, dass das ausführen von DBCC OPENTRAN, oder "select open_tran von sysprocess" code, ist viel weniger aufschlussreich, als unter den unten angegebenen Anweisungen, wenn Sie suchen für Informationen zu den Transaktionen:
Hier gibt es Erklärungen, wie der log_reuse_wait_desc-arbeitet:
Also in deinem Fall gibt es keine AKTIVE TRANSAKTION gerade jetzt, aber es war, als das abschneiden des Protokolls wurde versucht, die Letzte Zeit.
Gibt es ein paar links zu weiteren Extras/Verweise, die Sie verwenden können, um zu helfen, dieses problem zu beheben, auf der Referenzen-link für dieses video:
Verwalten von SQL Server 2005 und 2008 von Log-Dateien
Sagte, die Informationen in log_reuse_wait-Spalte korrekt sein sollte. Sie wahrscheinlich hatte gerade eine angehaltene oder verwaiste Transaktion, dass du nicht irgendwie in der Lage zu erkennen.
Meine Antwort von Die Log-Datei für die Datenbank Voll ist:
Sobald Sie eine vollständige Sicherung der Datenbank, und die Datenbank nicht das Einfache Wiederherstellungsmodell verwenden, SQL-Server hält eine vollständige Aufzeichnung aller Transaktionen, die jemals in der Datenbank durchgeführt. Er tut dies so, dass im Falle eines katastrophalen Versagens, wo Sie die Daten verlieren, können Sie die Datei wieder auf den Punkt des Scheiterns, indem Sie das Protokoll sichern und, sobald Sie haben restauriert ein altes backup-Daten, wiederherstellen des Protokolls wiedergeben, die verloren Transaktionen.
Um zu verhindern, dass dieses Gebäude eingerichtet wurde, müssen Sie das Transaktionsprotokoll sichern. Oder brechen Sie die Kette am derzeitigen Punkt mit der
TRUNCATE_ONLY
oderNO_LOG
Optionen von BACKUP LOG.Wenn Sie diese Funktion nicht benötigen, setzen Sie das Wiederherstellungsmodell auf Einfach.
Den Daten ist wahrscheinlich richtig. Was Sie tun müssen, ist eine regelmäßige Sicherung des Transaktionsprotokolls. Im Gegensatz zu anderen Ratschläge sollten Sie NICHT verwenden die NO_TRUNCATE-option auf 2005, wie es löscht den log der Transaktionen, aber es bedeutet nicht, Sie zu sichern.
Was Sie tun sollten, ist die Durchführung einer tail-log backup mit der BACKUP LOG-Anweisung mit der option NO_TRUNCATE. Sollten Sie die Anwendung regelmäßig Transaktionsprotokolle während des Tages. Dies sollte helfen, die Größe überschaubar.
Hm, tricky. Könnte es sein, dass die Frage es selbst zu sys.Datenbanken verursacht, die ACTIVE_TRANSACTION? In diesem Fall, obwohl, es sollte in den MASTER-und nicht die TEMPDB.