Ich muss mich derzeit mit einem SQL Server-Transaktionsprotokoll befassen, das außer Kontrolle geraten ist. Haftungsausschluss: Ich bin kein dba und dies ist nicht mein Fachgebiet. Bitte nehmen Sie Kontakt mit mir auf.
Derzeit habe ich eine 115-GB- Transaktionsprotokolldatei für eine 500-MB-Datenbank, die (offensichtlich) seit einiger Zeit schlecht verwaltet wurde, um in diesen Zustand zu gelangen.
Die oberste Priorität ist es, den von dieser Datei belegten Speicherplatz auf der Festplatte zurückzugewinnen, bevor wir leer sind! Mir wurde gesagt, dass eine Vergrößerung des Laufwerks auch vorübergehend keine Option ist. Aufgrund des Wachstums in der Vergangenheit müssen wir ziemlich bald handeln.
Soweit ich weiß, besteht der beste Ansatz darin, die Datenbank im vollständigen Wiederherstellungsmodus zu belassen, aber regelmäßige Sicherungen der Protokolldatei durchzuführen, diese über einen bestimmten Zeitraum zu überwachen und die anfängliche Größe und das Inkrement entsprechend anzupassen. Alles okay.
Da wir um Mitternacht regelmäßig vollständige DB-Sicherungen durchführen, ist es für mich sicher, die Datenbank vorübergehend in den einfachen Wiederherstellungsmodus zu versetzen (nachdem eine dieser Sicherungen ausgeführt wurde), die Protokolldatei zu verkleinern, um (praktisch den gesamten) Speicherplatz und den Speicherplatz zurückzugewinnen Setzen Sie es dann mit der oben genannten Sicherungsstrategie wieder in die vollständige Wiederherstellung ein.
Ich denke, wenn etwas um diese Zeit passiert ist, können wir einfach die vollständige Sicherung wiederherstellen, ohne die Protokolle zu verwenden.
AKTUALISIEREN
Einige zusätzliche Details als Antwort auf einige der Antworten und Kommentare:
Wir möchten die Möglichkeit behalten, eine Wiederherstellung zu einem bestimmten Zeitpunkt durchzuführen, damit die Datenbank im vollständigen Wiederherstellungsmodus bleibt.
Der Grund dafür, dass die T-Log-Datei so groß geworden ist, ist, dass sie nie gesichert wurde . Verifiziert als log_reuse_wait_desc gibt 'LOG_BACKUP' zurück.