Ihre Dateiverwaltung kann vollständig online sein. Sie haben zwei Pfade, abhängig davon, ob Sie Ihre Protokollinformationen für Wiederherstellungszwecke aufbewahren müssen:
Wiederherstellung zum Zeitpunkt nicht erforderlich
- Konvertieren Sie die Datenbank in die
SIMPLE
Wiederherstellung. Führen Sie einen Prüfpunkt aus, um Transaktionen auf die Festplatte zu schreiben.
- Reduzieren Sie das Protokoll.
- Ändern Sie die Größe des Protokolls auf die entsprechende Größe.
Ich empfehle außerdem, einen festen Wachstumsbetrag und ein unbegrenztes Wachstum festzulegen (um Ihr Protokoll besser verwalten zu können). Beachten Sie, dass die feste Wachstumsmenge sehr stark von der Menge abhängt. Ich würde empfehlen, zunächst 1-2 GB zu verwenden, je nachdem, wie viel Wachstum das Protokoll erwarten kann. Im Idealfall wächst Ihr Protokoll nicht stark, daher sollte dies keine großen Auswirkungen haben. Wenn Ihr Protokoll regelmäßig wächst, müssen Sie möglicherweise Ihre Größe überprüfen.
Erreicht mit:
ALTER DATABASE [foo]
SET RECOVERY SIMPLE;
CHECKPOINT;
DBCC SHRINKFILE (foo_log,0);
ALTER DATABASE [foo]
MODIFY FILE (NAME=foo_log,SIZE=8000MB,MAXSIZE=UNLIMITED,FILEGROWTH=1000MB);
--Optional if you want the database in full recovery mode
--for point in time recovery going forward
ALTER DATABASE [foo]
SET RECOVERY FULL;
Zeitpunkt der Wiederherstellung erforderlich
Das größte Problem besteht darin, dass Sie Ihre Protokolldatei nicht über Ihr derzeit aktives VLF-Segment hinaus verkleinern können. Um dies zu sehen, können Sie DBCC LOGINFO
im Datenbankkontext verwenden. Jedes Segment mit dem Status = 2 ist aktiv. Um aktive Segmente zu löschen, müssen Sie eine Transaktionsprotokollsicherung ausführen, wenn derzeit keine Transaktionen in diesem Segment aktiv sind. Ihre Schritte sind:
- Führen Sie eine Transaktionsprotokollsicherung durch.
- Verkleinern Sie Ihre Datei. (Idealerweise reduzieren, aber wenn Ihre Datenbank aktiv ist, ist dies schwierig).
- Wiederholen Sie die Schritte 1 und 2, bis Ihr Protokoll eine geeignete Größe hat, idealerweise so klein wie möglich.
- Ändern Sie die Größe des Protokolls auf die entsprechende Größe.
Erreicht mit:
BACKUP LOG [foo] TO DISK='<Location of t-log backup>';
DBCC SHRINKFILE (foo_log,0);
--Repeat the above until your log file is small "enough"
ALTER DATABASE [foo]
MODIFY FILE (NAME=foo_log,SIZE=8000MB,MAXSIZE=UNLIMITED,FILEGROWTH=1000MB);
Einige zusätzliche Ressourcen, um zu verstehen, was hier vor sich geht: