Berücksichtigt SQL Server Maintainance Cleanup genaue Zeitpunkte beim Löschen alter Backups?

Berücksichtigt SQL Server Maintainance Cleanup genaue Zeitpunkte beim Löschen alter Backups?

Nehmen wir an, ich habe eine tägliche Wartungsaufgabe, die:

  1. Sichert alle Datenbanken und dann
  2. entfernt Backups, die älter als 3 Tage sind.

Nehmen wir nun an, das erste Backup am Tag 1, beginnend um 10:00 Uhr, führt zu folgenden Dateien

db1.bak 2012-01-01 10:04
db2.bak 2012-01-01 10:06

Nehmen wir nun an, dass am vierten Tag der erste Schritt der Wartungsaufgabe (Sicherung der Datenbanken) zufällig um 10:05 Uhr abgeschlossen wird. Wird SQL Server

  • db1.bak löschen und db2.bak behalten (wäre logisch, könnte aber für den Benutzer überraschend sein) oder
  • beide behalten oder
  • beide entfernen?

Antwort1

Der Wartungsplan entfernt Sicherungsdateien zu dem Zeitpunkt, zu dem die Bereinigungsaufgabe gestartet wird, da er zu diesem Zeitpunkt das SQL generiert. In den drei von Ihnen beschriebenen Optionen würde also der erste Fall eintreten.

Ich habe einen Beispielplan erstellt, der Dateien entfernt, die älter als 3 Tage sind, und den Job ausgeführt. Aus der Protokollausgabe unten können Sie ersehen, dass der Job am 07.05.2013 um 12:25 Uhr ausgeführt wurde und Dateien entfernt hat, die älter als 12:25 Uhr am 04.05.2013 sind. Das T-SQL unten zeigt einen ungefähren Befehl, wie das Datum generiert werden könnte.

query:
select GETDATE()
select DATEADD(DAY, -3, GETDATE() )

results:
-----------------------
2013-05-07 12:51:52.073

(1 row(s) affected)

-----------------------
2013-05-04 12:51:52.073

(1 row(s) affected)

Wartungsplan: Wartungsplan Dauer: 00:00:02 Status: Erfolgreich. Details:

Datenbank über lokale Serververbindung sichern. Datenbanken: DBA-Typ: Vollständig. Vorhandene anhängen. Aufgabenstart: 2013-05-07T12:25:03. Aufgabenende: 2013-05-07T12:25:05. Erfolg. Befehl: BACKUP DATABASE [DBA] TO DISK = N''N:\Apps\MSSQL10.INSTANCE\MSSQL\Backup\DBA_backup_2013_05_07_122503_6738713.bak'' WITH NOFORMAT, NOINIT, NAME = N''DBA_backup_2013_05_07_122503_6738713'', SKIP, REWIND, NOUNLOAD, STATS = 10

GEHEN

Wartungsbereinigung bei lokaler Serververbindung. Datenbank bereinigen. Sicherungsdateien. Alter: Älter als 3 Tage. Aufgabenbeginn: 2013-05-07T12:25:05. Aufgabenende: 2013-05-07T12:25:05. Erfolg. Befehl: EXECUTE master.dbo.xp_delete_file 0,N''N:\Apps\MSSQL10.INSTANCE\MSSQL\Backup'',N''BAK'',N''2013-05-04T12:25:05''

GEHEN

verwandte Informationen