Wie schneide ich das Transaktionsprotokoll in einer SQL Server 2008-Datenbank ab?

9

Wie schneide ich das Transaktionsprotokoll in einer SQL Server 2008-Datenbank ab?

Was sind die besten Möglichkeiten?

Ich habe dies in einem Blog wie folgt versucht:

1) Von der Einstellungsdatenbank bis zur einfachen Wiederherstellung, Verkleinern der Datei und erneuten Einstellen der vollständigen Wiederherstellung verlieren Sie tatsächlich Ihre wertvollen Protokolldaten und können den Zeitpunkt nicht wiederherstellen. Darüber hinaus können Sie nachfolgende Protokolldateien nicht verwenden.

2) Durch Verkleinern der Datenbankdatei oder Datenbank wird eine Fragmentierung hinzugefügt.

Es gibt viele Dinge, die Sie tun können. Beginnen Sie zunächst mit der folgenden Protokollsicherung mit dem folgenden Befehl, anstatt sie abzuschneiden und häufig zu verlieren.

BACKUP LOG [TestDb] TO  DISK = N'C:\Backup\TestDb.bak'
GO

Entfernen Sie den Code von SHRINKING the file. Wenn Sie ordnungsgemäße Protokollsicherungen durchführen, wird Ihre Protokolldatei normalerweise (normalerweise werden auch Sonderfälle ausgeschlossen) nicht sehr groß.

Neo
quelle
2
OK, und was ist passiert, als du das versucht hast?

Antworten:

4

Der sicherste und korrekteste Weg, eine Protokolldatei abzuschneiden, wenn sich die Datenbank im vollständigen Wiederherstellungsmodus befindet, besteht darin, eine Transaktionsprotokollsicherung durchzuführen (ohne TRUNCATE_ONLY. Dies wird in zukünftigen Versionen nicht mehr empfohlen und ist nicht ratsam).

Es hört sich so an, als ob Sie Ihre Protokolldatei anschließend verkleinern möchten. In diesem Fall würden Sie einen DBCC SHRINKFILE(yourTLogName)Befehl ausführen . Es gibt einen optionalen zweiten Parameter für die angeforderte Größe, auf den sie verkleinert werden kann.

Thomas Stringer
quelle
8

Sie können das Protokoll auf dem Nullgerät sichern:

backup log [databasename] to disk = 'nul';

Oder Sie können das Wiederherstellungsmodell auf einfach und dann wieder auf voll / groß umstellen.

Max Vernon
quelle
Ich habe + eins dazu gemacht, weil dies ein Tool in der dbas-Toolbox ist und Ihre Antwort meiner Meinung nach keine negativen Stimmen verdient. Ich stimme der Meinung zu, dass der beste Weg darin besteht, Transaktionsprotokollsicherungen zu erstellen, aber hey, alle guten Tools können korrekt oder schlecht verwendet werden.
Martin Sjöberg
6

Wenn Sie sich nicht um Ihre Protokolldaten kümmern und diese nur entfernen möchten:

Ändern Sie das Wiederherstellungsmodell von vollständig in einfach und dann wieder in vollständig. Verkleinern Sie die Datei mit DBCC SHRINKFILE mit dem Argument TRUNCATEONLY

Der folgende Befehl ändert das Wiederherstellungsmodell von vollständig in einfach

ALTER DATABASE <databse_name> SET RECOVERY SIMPLE

Der folgende Befehl ändert das Wiederherstellungsmodell in "Voll"

ALTER DATABASE <databse_name> SET RECOVERY FULL

Um den Namen der Protokolldatei zu ermitteln, können Sie die folgende Abfrage verwenden

SELECT name 
FROM sys.master_files
WHERE database_id = DB_ID('<databse_name>')

Verkleinern Sie die Datei

DBCC SHRINKFILE (N'<logical_file_name_of_the_log>' , 0, TRUNCATEONLY)

Siehe Wie lautet der Befehl zum Abschneiden einer SQL Server-Protokolldatei? Weitere Informationen hierzu

Alex
quelle