Datensicherung Microsoft SQL Server

Top  Previous  Next

Allgemeine Hinweise

Es 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 Server

Mit 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.

 

ADMIN_MSS_Wartungsplan_anlegen

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

 

ADMIN_MSS_Sicherung_vollständig

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 Datensicherung

Die 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.

 

ADMIN_MSS_Sicherung_differenziell

Abb.: Tasks für eine differenzielle Datensicherung

 

 

Datensicherung für Microsoft SQL Server Express

Eine 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 Datensicherung

Beispiel 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 Datensicherung

Beispiel 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;