Datensicherung Microsoft SQL Server |
|
Allgemeine HinweiseEs muss in regelmäßigen Abständen die korrekte Wiederherstellung der erstellten Datenbanksicherungen kontrolliert werden. Weiterhin müssen die auf dem Server erstellten Datenbanksicherungen extern aufbewahrt und gesichert werden. Bei der Anzahl der angelegten Sicherungsdateien gilt es, die Festplatten- sowie die Datenbankgröße zu berücksichtigen.
Datensicherung für Microsoft SQL ServerMit Hilfe von Wartungsplänen kann eine automatische Datensicherung erfolgen. Voraussetzung für die Ausführung des Wartungsplans ist, dass der SQL Server-Agent aktiv ist. Dieser kann in der Windows Dienststeuerung oder auch bereits bei der Installation aktiviert werden. Die Einrichtung der Sicherung der SQL Server Datenbank erfolgt über das SQL Server Management Studio. Über das Kontextmenü des Punktes "Verwaltung" - "Wartungspläne" wird ein "Neuer Wartungsplan..." angelegt.
Abb.: Anlegen eines neuen Wartungsplans
Zum Einfügen der Wartungsplantasks kann über das Menü "Ansicht" die ""Toolbox" eingeblendet werden.
Vollständige Datensicherung (empfohlen)Die Sicherung erfolgt täglich zu einem festgelegten Zeitpunkt. Dabei werden folgende Wartungsschritte durchgeführt: •Datenbankintegrität überprüfen •Datenbank sichern (vollständig) •Wartungscleanup
Abb.: Tasks für eine vollständige Datensicherung
Hinweis: Voraussetzung für das empfohlene Datenbanksicherungsbeispiel ist, dass in den Datenbankeigenschaften der zu sichernden Datenbank das Wiederherstellungsmodell „Einfach“ definiert ist.
Differenzielle DatensicherungDie Sicherung erfolgt z.B. alle zwei Stunden während der Arbeitszeit Dabei werden folgende Wartungsschritte durchgeführt: •Datenbankintegrität überprüfen •Datenbank sichern
Dabei werden alle Daten, die seit der letzten vollständigen Sicherung geändert wurden oder neu hinzugekommen sind, gespeichert. Im Vergleich zu einer vollständigen Sicherung werden dabei Speicherplatz und Zeit gespart.
Abb.: Tasks für eine differenzielle Datensicherung
Datensicherung für Microsoft SQL Server ExpressEine Sicherung über das Management Studio ist nicht möglich, da mit dieser Version keine Wartungspläne angelegt werden können (es ist keine automatische Sicherung vom Hersteller vorgesehen). Um die Datenbanksicherungen dennoch automatisch zu erstellen, besteht die Möglichkeit, eine Stapelverarbeitungsdatei anzulegen und diese über die Windows-Aufgabenplanung zeitgesteuert zu starten.
Achtung: In den unten aufgeführten Beispieldateien für die vollständige bzw. differenzielle Datensicherung müssen die Variablen, Datenbanknamen und Servernamen entsprechend angepasst werden.
Vollständige DatensicherungBeispiel einer Stapelverarbeitungsdatei Datei „db_sv.bat“:
@echo DELECO-DB sichern (Vollstaendig)
set sicherungslogfile=C:\Datenbanksicherungen\Sicherungslog\sicherungslog_voll.txt set db_s_file=C:\Datenbanksicherungen\Scripte\db_sv.sql set wartungscleanupfile=C:\Datenbanksicherungen\Sicherungslog\wartungscleanuplog.txt set sicherungsdir=C:\Datenbanksicherungen\DEMO\ set sicherungsfiles=%sicherungsdir%\*.bak
sqlcmd -S SERVERNAME -i %db_s_file% -o %sicherungslogfile%
@echo . >> %sicherungslogfile% @echo . >> %sicherungslogfile% @echo ********************************* >> %sicherungslogfile% @echo Vollständige Sicherung angelegt >> %sicherungslogfile% @echo Ende der DB-Sicherung >> %sicherungslogfile% date /T >> %sicherungslogfile% time /T >> %sicherungslogfile%
del %wartungscleanupfile%
@echo . >> %wartungscleanupfile% @echo . >> %wartungscleanupfile% @echo ***************************************** >> %wartungscleanupfile% @echo * Verzeichnisinhalt vor Wartungscleanup * >> %wartungscleanupfile% @echo ***************************************** >> %wartungscleanupfile%
dir %sicherungsfiles% >> %wartungscleanupfile%
cd %sicherungsdir% forfiles /c "cmd /c del @file /m *.bak /D -3
@echo . >> %wartungscleanupfile% @echo . >> %wartungscleanupfile% @echo ****************************************** >> %wartungscleanupfile% @echo * Verzeichnisinhalt nach Wartungscleanup * >> %wartungscleanupfile% @echo ****************************************** >> %wartungscleanupfile%
dir %sicherungsfiles% >> %wartungscleanupfile%
@echo . >> %wartungscleanupfile% @echo . >> %wartungscleanupfile% @echo ******************** >> %wartungscleanupfile% @echo Ende Wartungscleanup >> %wartungscleanupfile% date /T >> %wartungscleanupfile% time /T >> %wartungscleanupfile%
exit
Beispiel einer SQL-Script-Datei „db_sv.sql“:
USE [DEMO]; GO DBCC CHECKDB(N'DEMO') WITH ALL_ERRORMSGS; GO
declare @Sicherungspfad varchar(256); declare @Zeit varchar(256); declare @Name varchar(256); declare @Disk varchar(256);
set @Sicherungspfad = N'C:\Datenbanksicherungen\DEMO\'; EXECUTE master.dbo.xp_create_subdir @Sicherungspfad;
set @Zeit = cast(SYSDATETIME() as varchar); set @Zeit = REPLACE(@Zeit, '-', '_'); set @Zeit = REPLACE(@Zeit, ' ', '_'); set @Zeit = REPLACE(@Zeit, ':', ''); set @Zeit = REPLACE(@Zeit, '.', '_');
set @Name = 'DEMO_backup_' + @Zeit; set @Disk = @Sicherungspfad + @Name + '.bak';
BACKUP DATABASE [DEMO] TO DISK = @Disk WITH NOFORMAT, INIT, NAME = @Name, SKIP, REWIND, NOUNLOAD, NO_COMPRESSION, STATS = 10; GO
Differenzielle DatensicherungBeispiel einer Stapelverarbeitungsdatei „db_sd.bat“:
@echo DELECO-DB sichern (Tagessicherung-differentiell)
set sicherungslogfile=C:\Datenbanksicherungen\Sicherungslog\sicherungslog_diff.txt set db_s_file=C:\Datenbanksicherungen\Scripte\db_sd.sql
sqlcmd -S SERVERNAME -i %db_s_file% -o %sicherungslogfile%
@echo . >> %sicherungslogfile% @echo . >> %sicherungslogfile% @echo ********************************* >> %sicherungslogfile% @echo Differentielle Sicherung angelegt >> %sicherungslogfile% @echo Ende der DB-Sicherung >> %sicherungslogfile% date /T >> %sicherungslogfile% time /T >> %sicherungslogfile%
exit
Beispiel einer SQL-Script-Datei „db_sd.sql“:
USE [DEMO]; GO DBCC CHECKDB(N'DEMO') WITH ALL_ERRORMSGS; GO
declare @Sicherungspfad varchar(256); declare @Zeit varchar(256); declare @Name varchar(256); declare @Disk varchar(256);
set @Sicherungspfad = N'C:\Datenbanksicherungen\DEMO\'; EXECUTE master.dbo.xp_create_subdir @Sicherungspfad;
set @Zeit = cast(SYSDATETIME() as varchar); set @Zeit = REPLACE(@Zeit, '-', '_'); set @Zeit = REPLACE(@Zeit, ' ', '_'); set @Zeit = REPLACE(@Zeit, ':', ''); set @Zeit = REPLACE(@Zeit, '.', '_');
set @Name = 'DEMO_backup_diff_' + @Zeit; set @Disk = @Sicherungspfad + @Name + '.bak';
BACKUP DATABASE [DEMO] TO DISK = @Disk WITH DIFFERENTIAL, NOFORMAT, INIT, NAME = @Name, SKIP, REWIND, NOUNLOAD, NO_COMPRESSION, STATS = 10;
|