Logo faq-o-matic.net
Logo faq-o-matic.net

Tägliche SQL-Backup-Dateien

von veröffentlicht am19. Mai 2003, 14:56 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: Scripting, SQL Server   Translate with Google Translate Translate EN   Die angezeigte Seite drucken

Oft will man sämtliche Backups eines Tages übersichtlich zusammenfassen. Das ist insbesondere dann interessant, wenn man die eingebaute Backup-Funktion des SQL Server nutzt und mehrere Sicherungen über einen Tag ausführt (z.B. durch häufige Log Backups).

Dies kann beispielsweise durch eine Backupdatei erreicht werden, die das aktuelle Datum trägt. Hier ist ein kleines Skript, das dies demonstriert (für MS SQL Server ab 7.0).

DECLARE @backname VARCHAR(128)
SET @backname = 'c:\backup\backup' + CONVERT(VARCHAR, GETDATE(), 104) + '.bak'

BACKUP DATABASE Northwind TO DISK = @backname

Erläuterung: Es wird hier die Tatsache ausgenutzt, dass T-SQL das Zusammenbauen von Zeichenketten in einer Variablen unterstützt. Hier wird einfach das aktuelle Datum (Funktion "getdate()") in einen Dateipfad eingebaut und als Variable "@backname" an den Backup-Befehl übergeben. Die Datei heißt dann "backup24.02.2002.bak" und liegt in "C:\backup".

Backupmedium

Um hier flexibler zu sein, kann die Technik der Backup-Medien hilfreich sein: Ein Backup-Medium ist ein logischer Name für eine Backup-Datei oder ein Tape. Dieser logische Name ist unabhängig vom realen Speicherort. Daher kann man einfach täglich ein neues Medium unter demselben Namen anlegen, hinter dem sich aber ein neuer physischer Name verbirgt.

Das folgende Skript demonstriert diese Technik. Es prüft, ob bereits ein Medium namens "BackMedium" vorhanden ist. Falls ja, wird es gelöscht. Dann wird es mit dem aktuellen Namen neu angelegt.

IF EXISTS (SELECT name FROM master.dbo.sysdevices WHERE name = 'BackMedium')
        BEGIN
                EXEC sp_dropdevice 'BackMedium'
        END

DECLARE @medname VARCHAR(128)
SET @medname = 'c:\backup\media' + CONVERT(VARCHAR, GETDATE(), 104) + '.bak'

EXEC sp_addumpdevice 'disk', 'BackMedium', @medname

Erläuterung: Fast dieselbe Technik wie oben, nur wird hier der generierte Name an die Prozedur "sp_addumpdevice" übergeben, mit der ein logisches Backupmedium definiert wird (hier: "media24.02.2002.bak" in "C:\backup").

Automatisches Anlegen täglicher Backupmedien

Das Anlegen täglicher Backup-Medien kann mit dem SQL Server Agent automatisiert werden. Man braucht nur einen Job anzulegen, der das oben gezeigte Skript um 0:00 Uhr ausführt. Danach kann – unabhängig vom Tagesdatum – der Backupjob stets mit dem Namen des logischen Backup-Mediums ausgeführt werden.

© 2005-2023 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!