Wir haben hier einen kleinen Backup-Verlauf.

Wir haben hier ein wenig Backup-Geschichte.

SQL Server verfolgt den Verlauf jeder Sicherung. Es speichert diese Daten in der MSDB-Datenbank. Dies ist eine Systemdatenbank, und standardmäßig werden unsere Systemdatenbanken auf dem Laufwerk C gespeichert, sofern bei der Installation nichts anderes angegeben ist.

Dies stellt auf verschiedene Arten eine Gefahr dar:

Das Laufwerk C füllt sich möglicherweise, wodurch MSDB-Schreibvorgänge fehlschlagen. Das Systemlaufwerk füllt sich häufiger als Sie vielleicht denken – verursacht durch unvorsichtige Benutzer, die große Dateien auf ihren Desktop (auf dem Systemlaufwerk) herunterladen, oder durch Windows-Updates, die viele Dateien in einen temporären Ordner auf dem Systemlaufwerk herunterladen.

MSDB wächst möglicherweise, um das Laufwerk C zu füllen, wodurch Windows fehlschlägt. In Fällen, in denen wir sehr häufige Transaktionsprotokollsicherungen einer großen Anzahl von Datenbanken durchführen und MSDB niemals bereinigen, kann diese Datenbank groß genug werden, um kleine C-Laufwerke zu bedrohen. Wenn das Laufwerk C gefüllt ist, schlägt Windows hart fehl.

Das Systemlaufwerk ist oft langsam. In alten Versionen von SQL Server wurden die Systemdatenbanken nicht gut indiziert. Kombinieren Sie dies mit langsamen lokalen Laufwerken, und wir haben ein Rezept für langsamen MSDB-Zugriff. In einem Fall wurden während unserer nächtlichen Sicherungsfenster 2/3 der Zeit nur für die Aktualisierung von MSDB aufgewendet!

Überwachungstools können MSDB ineffizient abfragen. Wir haben Fälle gesehen, in denen Serverüberwachungstools von Drittanbietern MSDB ständig überprüften, um sicherzustellen, dass alle Datenbanken gesichert wurden, ihre Abfragen jedoch keine Indizes verwendeten. Diese Abfragen können die langsamste Sache auf dem Server sein.

Dieser Teil unseres SQL Server sp_Blitz-Skripts überprüft, ob der MSDB-Sicherungsverlauf älter als 60 Tage ist. Dies ist an sich kein Problem – Sie möchten möglicherweise lange Zeiträume des Sicherungsverlaufs aufbewahren, nur um Leistungs– und Berichterstattungen durchzuführen -, aber ziehen Sie in Betracht, diese Daten in Excel oder Ihr bevorzugtes Berichterstellungstool zu verschieben, anstatt jedes Mal auf MSDB zu klicken.

Kehren Sie zu sp_Blitz zurück oder stellen Sie uns Fragen

So bereinigen Sie den überlasteten MSDB-Sicherungsverlauf

Erwägen Sie, den MSDB-Sicherungsverlauf von Daten zu bereinigen, die älter als 60 Tage sind. Sie können dies auf verschiedene Arten tun:

  • Sie können einen Wartungsplan erstellen, der die Verlaufsbereinigungsaufgabe regelmäßig ausführt.
  • Sie können einen einfachen SQL Server-Agent-Job erstellen, der sp_delete_backuphistory regelmäßig ausführt (Sie können auch sp_purge_jobhistory ausführen lassen, wenn Sie die Wartungsplanfunktionalität anpassen möchten).

Erweitern Sie den Knoten Wartungsplan in SSMS, klicken Sie mit der rechten Maustaste und wählen Sie „Neuer Wartungsplan…“

2015-04-10_14-20-46

Wählen Sie Maintenance Cleanup Task aus dem Toolbox-Fenster (beachten Sie, dass dieses Fenster manchmal links unter dem Objekt-Explorer in SSMS ausgeblendet wird:

2015-04-10_14-21-26

Zum Abschluss doppelklicken Sie auf die Aufgabe, wählen Sie die Art der Bereinigung, die Sie durchführen möchten, und wie viele Daten Sie behalten möchten. Ich erstelle manchmal zwei Aufgaben, da mir der Agentenauftragsverlauf und der Wartungsplanverlauf weniger wichtig sind als Sicherungen, und ich möchte normalerweise, dass mein Sicherungsverlauf mit meiner Datenaufbewahrungsrichtlinie übereinstimmt.

2015-04-10_14-22-03

So oder so, wenn Ihr Server eine große Menge an Geschichte hat, wird dieser Schritt eine loooong Zeit dauern, um das erste Mal zu laufen. Wie Brent im Artikel MSDB Bottleneck feststellte, müssen Sie möglicherweise auf extreme Maßnahmen zurückgreifen, z. B. das Ändern von Fremdschlüsseln der Systemdatenbank, um das Löschen zu ermöglichen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.