Wie kann ich die Größe des SQL Server-Protokolls verwalten?

Ich versuche, die Größe einer SQL Server 2008-Protokolldatei zu verwalten. Ich habe eine Berichtsdatenbank, die einmal täglich geladen wird. Das einfache Wiederherstellungsmodell ist am besten geeignet, da es keine anderen Transaktionen als die Morgenlast gibt und ich diese Datensätze neu erstellen kann. Mein Ziel ist es, das Transaktionsprotokoll so groß zu haben, dass während der Auslastung kein neuer Speicherplatz zugewiesen werden muss.

Mein Problem ist, dass das Protokoll weiter wächst. Ich weiß, dass das Protokoll zur Wiederverwendung markiert werden soll, aber warum wächst das Protokoll weiter? Die log_reuse_wait_desc zeigt "Nothing".

Ich kann die Protokolldatei auf 1 MB verkleinern, so dass ich weiß, dass es keine Transaktionen darin gibt. Ich kann einen Auftrag einrichten, um dies zu tun, aber ich würde es vorziehen, das Protokoll bei 500MB zu belassen, was ausreicht, um die täglichen Lasten zu bewältigen. Wenn ich dies tue, wächst das Protokoll.

Wie kann ich das Protokoll in einer konsistenten Größe halten?

Bitte beachten Sie: Durch das Verkleinern der Protokolldatei wird dieses Problem nicht behoben. Ich weiß, wie das geht. Ich versuche, einen Weg zu finden, wie Speicherplatz im Transaktionsprotokoll wiederverwendet werden kann.

Antwort auf "Wie kann ich die Größe des SQL Server-Protokolls verwalten? " 4 von antworten

erstellen sie einen Wartungsauftrag, der die DB sichert und das Protokoll

verkleinert

Von der Oberseite meines Kopfes können Sie DBCC SHRINKFILE verwenden, um dies zu tun.

Mit dem DbCC-Shrinkfile-Befehl können Sie eine Zielgröße angeben:

DBCC SHRINKFILE (DataFile1, 7)

verkleinert die Datei DataFile1 auf 7MB

Dokument unter: MSDN

(Ich verwende SQL Server 2005)

  1. Starten Sie Microsoft SQL Server Management Studio
  2. Suchen Sie Ihre Datenbank und klicken Sie mit der rechten Maustaste darauf. Wählen Sie Eigenschaften aus.
  3. Klicken Sie auf Dateien Abschnitt
  4. Finden Sie die LOG FILE Zeile.
  5. Ändern Sie die Anfangsgröße auf: 500
  6. Suchen Sie den Abschnitt Autogrowth und klicken Sie auf die Ellipse (...)
  7. Deaktivieren Sie "Autogrowth aktivieren". Klicken Sie auf OK.
  8. Klicken Sie auf OK, um die Änderung vorzunehmen.

Hinweis: Sie können auch eine maximale Protokolldateigröße im Abschnitt "Autogrowth" festlegen.

Alternativ können Sie das folgende Skript verwenden, um die Änderung vorzunehmen. Ersetzen Sie DATABASENAME durch den entsprechenden Wert. Ändern Sie ggf. auch den Protokolldateinamen.

USE [master]
GO
ALTER DATABASE [DatabaseName] MODIFY FILE ( NAME = N'DATABASENAME_Log', SIZE = 512000KB , FILEGROWTH = 0)
GO

Die Protokolldatei wird für Transaktionszwecke verwendet, auch wenn sich die Datenbank in SIMPLE RECOVERY MODE befindet. Wenn die LOG-Größe wirklich über 500 MB hinauswächst, führt jemand eine Abfrage oder gespeicherte Prozedur aus, die diesen Speicherplatz benötigt.

Möglicherweise erstellen Sie z. B. Indizes für Ihre Berichtstabellen. Dies erfolgt innerhalb einer Transaktion, sodass die Änderungen im Falle eines Fehlers zurückgesetzt werden können. Der verwendete Speicherplatz wird jedoch nach Abschluss der Transaktionen für andere Transaktionen freigegeben.

Wenn also die Protokollgröße bei 1MB beginnt und auf 700 MB zunimmt, wird etwas getan, das diesen Speicherplatz erfordert. Wenn Sie die Größe auf 500 MB sperren, wird schließlich der Fehler "Logfile out of space" angezeigt.

Aber wenn Sie es wirklich mit 500MB beheben möchten, können Sie Folgendes tun: