SQL Transaktionsprotokoll ist immer aktiv – kann nicht abgeschnitten oder verkleinert werden

28/01/2008 - 18:39 von Rene | Report spam
Hallo SQL Gemeinde,
ich habe folgendes Problem mit meinem SQL Server 2005 Standard Sp2.
Das Transaktionsprotokoll ist mittlerweile größer als die eigentliche
Datenbank.
Der Bericht Datenbankverwendung zeigt mir folgende Werte:
Datenbank: 13 GB
Transaktionsprotokoll: 19,5 GB
Gesamt: 32,5 GB
Als Backupverfahren verwende ich „Vollstàndig“
Leider làßt sich das Protokoll auch nicht verkleinern, da die Transaktionen
in Protokoll noch als aktiv markiert sind.
Folgende Empfehlungen aus diversen Foren im Internet habe ich schon auf
einer Testdatenbank versucht:
• Backup auf „Einfach“ gestellt.
• Transaktionsprotokoll extra gesichert.
• Shrinkfile …
• Backup log …
• Checkpoint manuell gesetzt
Das Problem ist immer wieder das gleiche. Der aktive Teil im
Transaktionsprotokoll wird nicht auf inaktiv gesetzt. Somit kann ich das
Protokoll nicht verkleinern oder abschneiden.
Nach langer Recherche im Internet und in der MSDN habe ich jetzt noch
folgende mögliche Ursache herausgefunden.
use master
go
select * from sys.databases

In der sys.databases steht in den Spalten
log_reuse_wait = 6
log_reuse_wait_desc = REPLICATION

Ich vermute das das der Grund ist, warum er die Transaktionsprotokolle immer
noch auf aktiv gesetzt hat. Deshalb kann ich die Protokolle auch nicht
abschneiden. Der Server wartet möglicherweise immer noch auf die Replikation
mit einer anderen Datenbank.
Das Beste an der Sache ist jedoch, dass niemals eine Replikation mit der
Datenbank versucht wurde.
Also woher kommt die Einstellung und wie kann ich die Einstellung wieder
àndern?
Wie kann ich die sys.databases Eintràge àndern?
Ein normales update ist anscheinend nicht möglich?
Welche Tabellen stecken hinter der View sys.databases?

Kann das daran liegen, dass ich die Datenbank von SQL 7.0 auf SQL 2000 auf
SQL 2005 portiert habe?
Auf SQL 2005 làuft sie mittlerweile ein gutes halbes Jahr ohne Probleme.

Weiterhin habe ich festgestellt, dass eine Transaktion nicht abgeschlossen
ist.
use test
go
dbcc opentran

Mit folgender Meldung:
Transaktionsinformationen für die 'test'-Datenbank.

Replizierte Transaktionsinformationen:
Älteste verteilte LSN : (0:0:0)
Älteste nicht verteilte LSN : (460495:173:1)
Die DBCC-Ausführung wurde abgeschlossen. Falls DBCC Fehlermeldungen
ausgegeben hat, wenden Sie sich an den Systemadministrator.

Wie kann ich die Transaktion abschließen oder löschen.
Ich denke dass alle Transaktionen nach dieser deshalb „aktiv“ bleiben und
deshalb nicht abgeschnitten werden können.

Gibt es eine Abfrage, wie man erkennen kann seit wann die Transaktion hàngt?
Gibt es eine Abfrage, wie man erkennen kann welche Transaktion hàngt und was
das hàngen verursacht hat?
Was sagen mir die Zahlen LSN : (460495:173:1)?

Fragen über Fragen, wer weiß eine Antwort?
Die Zeit dràngt, da die Backups und Restores mittlerweile zu lange dauern.
Wir bekommen auch Timeouts von den Clients. Ich denke das sind Folgefehler
durch zu langes schreiben und warten auf das zu große Transaktionsprotokoll.

Danke im Voraus für die Hilfe.
Grüße Rene
 

Lesen sie die antworten

#1 Elmar Boye
29/01/2008 - 10:47 | Warnen spam
Hallo Rene,

Rene schrieb ...
ich habe folgendes Problem mit meinem SQL Server 2005 Standard Sp2.
Das Transaktionsprotokoll ist mittlerweile größer als die eigentliche
Datenbank.

In der sys.databases steht in den Spalten
log_reuse_wait = 6
log_reuse_wait_desc = REPLICATION

Ich vermute das das der Grund ist, warum er die Transaktionsprotokolle
immer noch auf aktiv gesetzt hat. Deshalb kann ich die Protokolle auch
nicht abschneiden.



Das siehst Du richtig. Das Problem wird u. a. beschrieben in
http://support.microsoft.com/?kbid17375
"A transaction log grows unexpectedly or becomes full on a computer that
is running SQL Server"

Der Server wartet möglicherweise immer noch auf die Replikation mit einer
anderen Datenbank. Das Beste an der Sache ist jedoch, dass niemals eine
Replikation mit der Datenbank versucht wurde.
Kann das daran liegen, dass ich die Datenbank von SQL 7.0 auf SQL 2000 auf
SQL 2005 portiert habe?



Da die Datenbank von SQL Server 7 migriert wurde, könnte das irgendwann
mal versucht worden sein, auch gab es in àlteren Versionen einige Probleme,
die zu solch einem Verhalten führten, siehe obiger KB Artikel.

Versuche mal ob sich die Replikation mit sp_removedbreplication
entfernen làsst. Bleibt der Eintrag bei DBCC OPENTRAN versuche sp_repldone

Auf SQL 2005 làuft sie mittlerweile ein gutes halbes Jahr ohne Probleme.



Laufen tut die Datenbank deswegen schon. Nur wird das Protokoll
eben niemals korrekt sein, u. U. die Platte füllen.

Gruss
Elmar

Ähnliche fragen