Die Protokolldatei der SQL Server-Verteilungsdatenbank wächst nach vollständiger Datenbanksicherung unkontrolliert


8

Wir haben eine Merge-Replikationsumgebung, die 8 Abonnenten erreicht. Das funktioniert gut. Unsere Verteilungsdatenbank ist im einfachen Wiederherstellungsmodus eingerichtet. Wir haben einen Wartungsplan, der jeden Tag um 00:30 Uhr die gesamte Datenbank sichert. Sobald dieser Vorgang abgeschlossen ist, wächst die Verteilungsprotokolldatei in den nächsten 30 Minuten und belegt den gesamten verbleibenden Speicherplatz auf der Festplatte (ca. 90 GB).

Was dann passiert, ist, dass die Verteilungsdatenbank als "Wiederherstellung ausstehend" angezeigt wird und wir nichts tun können, bis wir den Computer neu starten. Danach kann ich die Protokolldatei auf 2 MB verkleinern.

Ich habe keine Ahnung, warum das passiert. Die Protokolldatei wird tagsüber mit ca. 10 MB ausgeführt. Die Datenbankgröße liegt bei 15 GB.


2
Was sonst ist der Wartungsplan zu tun? Und was ist der sys.databases.log_reuse_wait_descWert während dieser 30 Minuten, während das Protokoll wächst?
Remus Rusanu

Was bringt die Datenbank in einen ausstehenden Wiederherstellungszustand? Das sollte bei einer vollständigen Sicherung nicht passieren.
Mrdenny

1
OK, es scheint also, dass wenn dieser Job "Agentverlauf bereinigen: Verteilung" ausgeführt wird, die Protokolldatei wächst ... Die Sicherung wird möglicherweise durchgeführt, während dieser Job noch ausgeführt wird. Ich bin nicht sicher, ob dies das Problem verursachen wird. Ich habe die Verlaufsbereinigung so eingestellt, dass sie eine Stunde früher ausgeführt wird. Mal sehen, was die Ergebnisse sind
Koenyn

Gibt es eine Indexwiederherstellung?
Carol Baker West

Antworten:


2

Es hört sich so an, als ob bei Ihrer Replikation ein hohes Transaktionsvolumen auftritt. Wenn ja, sollte dieser Job "Aufräumen: Verteilung" wahrscheinlich viel häufiger ausgeführt werden. Es klingt für mich so, als würde es einmal am Tag passieren. Auf meinem High-Transaction-Replikationsserver wird er alle 15 Minuten ausgeführt, um nur die letzten 36 Stunden zu speichern. Auf diese Weise geht es auf und ab und bleibt nicht hängen.

Hier ist ein Artikel, der helfen könnte - http://www.sqlservergeeks.com/blogs/singhsatnam84/sql-server-bi/563/sql-server-controlling-growth-of-a-distribution-database


1
Ja, wir führen es einmal am Tag durch. Ich habe jetzt die Größe der Protokolldatei auf 15 GB begrenzt. Das scheint sehr geholfen zu haben. Sie müssen es jetzt nicht mehr abschneiden und unser Server stürzt nicht ab. Was sind die Risiken, wenn der Job alle 15 Minuten ausgeführt wird?
Koenyn

Die Bereinigung ist ein einfacher gespeicherter Proc-Aufruf. Durch häufigeres Ausführen ist die Stapelgröße kleiner. Wenn Ihre Aufbewahrung korrekt eingestellt ist, besteht kein Risiko, das ich gefunden habe. Nach meiner Erfahrung bleibt die Replikationsverzögerung gering. dbo.sp_MSdistribution_cleanup
Cate Donoghue

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.