2.8 KiB
Sql Express Backup
Dienstag, 21. Juni 2011
16:02
Das folgende Skript sichert sowohl die Datenbank selbst als auch die Transaktionsprotokolle in jeweils eine Datei. Letzteres ist wichtig, falls das "Wiederherstellungsmodell" der Datenbank auf "Vollständig" steht. Wird in diesem Fall keine regelmäßige Transaktionsprotokollsicherung durchgeführt, kann die Serverfestplatte volllaufen. Im Beispiel heißt die Datenbank "MeineDB".
BACKUP DATABASE [MeineDB] TO DISK='C:\Backup\MeineDB_sich.bak'
WITH INIT, NAME = N'MeineDB_Sicherung'
BACKUP LOG [MeineDB] TO DISK='C:\Backup\MeineDB_Log_sich.bak'
WITH INIT, NAME = N'MeineDB_Log_Sicherung'
Die Option "with init" sorgt dafür, dass die Sicherungsdatei bei jedem Backup überschrieben wird. In der Datei ist so nur die letzte Sicherung enthalten. Diese Datei wird gespeichert als "MeineDB-Fullbackup.sql". Wer in einem separaten Job nur die Transaktionprotokolle sichern möchte, teilt die Datei in zwei und setzt jeweils nur das "backup database"- bzw. das "backup log"-Kommando in eine Datei. Der folgende Code bildet die Batchdatei, die z.B. täglich mit dem Windows-Taskplaner aufgerufen wird:
Eingefügt aus <http://www.faq-o-matic.net/2008/04/20/automatische-backups-fr-sql-server-express/>
@echo off
rem Ausführen eines Full Backup der MeineDB-Datenbank
rem !! das Folgende ist eine einzige Zeile!
"C:\Programme\Microsoft SQL Server\90\Tools\binn\SQLCMD.EXE" -S DBSERVER
-E -i C:\Backup\MeineDB-FullBackup.sql -o C:\Backup\BackupLog.txt
rem !! ab hier wieder normal
rem Zeitstempel erzeugen
for /f "tokens=1-4 delims=. " %%i in ("%date%") do (
set day=%%i
set month=%%j
set year=%%k
)
for /f "tokens=1-4 delims=.:, " %%i in ("%time%") do (
set hour=%%i
set minute=%%j
set second=%%k
set hundredth=%%l
)
rem Log-Datei mit Zeitstempel umbenennen
ren C:\Backup\BackupLog.txt FullBackup-%year%-%month%-%day%-%hour%-%minute%.txt
Eingefügt aus <http://www.faq-o-matic.net/2008/04/20/automatische-backups-fr-sql-server-express/>
Diese Batchdatei ruft das SQL-Sicherungsskript mit dem Hilfsprogramm sqlcmd.exe auf, das den SQL Server auf der Kommandozeile ansteuern kann. Der Datenbankserver trägt hier den Namen "DBSERVER". Zur besseren Nachverfolgung schreibt die Batchdatei die Ausgaben des sqlcmd-Kommandos in eine Logdatei, die dann mit dem aktuellen Zeitstempel umbenannt wird.
Dieses Verfahren funktioniert (voraussichtlich) auch mit SQL Server 2008 Express Edition. Natürlich kann man so auch Datenbanken eines "echten" SQL Server sichern, nur ist es in dem Fall sinnvoller, das SQL-Backupskript gleich über den mitgelieferten SQL Server Agent auszuführen, der sich zur SQL-Automatisierung noch besser eignet.
Eingefügt aus <http://www.faq-o-matic.net/2008/04/20/automatische-backups-fr-sql-server-express/>