Anhängen von Sicherungen beim Überschreiben abgelaufener Sätze


7

Ich habe darüber gelesen, aber die Online-Dokumentation ist etwas schwer zu verstehen und scheint umständlich geschrieben zu sein. Zum Beispiel die INIT, NOINIT. Man sagt, es wird versuchen, alles zu überschreiben. Der andere sagt, es wird trotzdem angehängt.

Ich möchte etwas dazwischen. Ich möchte, dass abgelaufene Mediensätze nicht mehr in der Datei enthalten sind, sondern dass neue Sicherungsjobs neben noch nicht abgelaufenen Sätzen an die Datei angehängt werden.

Führt die unten stehende SQL die gewünschte Sicherung durch?

BACKUP DATABASE [mydb] 
TO  DISK = N'c:\Backups\mydb.bak' 
WITH NOFORMAT, NOINIT,  NAME = N'mydb-Full Database Backup', NOSKIP, 
NOREWIND, NOUNLOAD,  STATS = 10, RETAINDAYS = 60
GO

Wenn ich die oben genannten Schritte ausführe und ein Sicherungssatz vorhanden ist, der älter als 60 Tage ist, wird er dann aus der Datei entfernt?

Bearbeiten:

Als Antwort auf den Vorschlag von RichardTheKiwi habe ich den Code neu geschrieben, um jedes Mal eine neue Datei zu erstellen. Ich werde dann ein Windows-Skript schreiben, um Dateien zu löschen, die älter als ein bestimmtes Datum sind

declare @filename varchar(max)
set @filename = 'c:\sqlbackups\pptd_' +  replace(replace(convert(varchar, getdate(), 120),':','_'),' ','_') + '.bak'
BACKUP DATABASE [Peter's pointless test database] 
TO  DISK = @filename
WITH FORMAT, INIT,  NAME = N'pptd-Full Database Backup', 
NOREWIND, NOUNLOAD,  STATS = 10
GO

Haben Sie versucht, es selbst auf einem nicht wichtigen Backup-Set zu testen?

Nun, ich habe es getestet, aber ich muss zwei Monate warten, um zu wissen, ob es das tut, was ich brauche. Ich könnte die Retaindays auf 1 ändern und morgen erneut testen, aber das ist langsamer und weniger zuverlässig, als Experten von db admin zu fragen.
MrVimes

1
@ MrVimes :-) "Zuverlässig" = testen und Beweise haben.
Thomas Stringer

Anstatt dass jemand meine Frage beantwortet, muss ich die Abfrage ändern, um einen Tag beizubehalten, zwei Tage zu warten und zu prüfen, ob das heutige Backup abgelaufen ist.
MrVimes

@ MrVimes Das überhaupt nicht sagen. Lassen Sie sich hier auf jeden Fall von uns beraten, aber ich würde empfehlen, die Antwort, die Sie erhalten, zu testen und mit eigenen Augen zu sehen. Eine Tatsache kann man beweisen. Nur meine $ 0,02.
Thomas Stringer

Antworten:


5

Leider nein, das wird nicht funktionieren. Es wird weiterhin angehängt, die abgelaufenen Sätze bleiben jedoch im selben Archiv. Dieser Screenshot zeigt ein Backup-Archiv mit Ihrem Skript, das auf eingestellt RETAINDAYS = 2ist und einmal im November (VM-Trick) und heute noch einmal ausgeführt wird.

Geben Sie hier die Bildbeschreibung ein

Ich denke, was Sie suchen, ist ein fortlaufendes Backup. Wenn dies also wöchentlich ist, sollten nach einer Einbrennphase 7 alte Backup-Sets beibehalten, eines entfernt und ein neues angehängt werden.

Persönlich würde ich einen einzelnen Sicherungssatz pro Datei behalten und die Bereinigungsfunktion im Wartungsassistenten verwenden, um alte Dateien zu entfernen. das oder eine reguläre Windows-geplante Aufgabe. Es sollte nicht wirklich notwendig sein, Sicherungssätze in einer einzigen Datei zu speichern.



Vielen Dank. Würde mein Backup-Skript also jedes Mal einen neuen Dateinamen erstellen lassen (möglicherweise mit dem Datum, das an den Dateinamen angehängt ist)?
MrVimes

@ MrVimes Klingt nach einer perfekten Idee
孔夫子

Zu Ihrer Information Ich habe meine Frage mit einem Skript aktualisiert, um jedes Mal eine Datei zu erstellen.
MrVimes
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.