Microsoft SQL Server und keine regelmäßigen Backups => Wie ich Backup-Strategien entwickle, die im Ernstfall Daten retten

Wenn das Backup fehlt, wird Restore zur Illusion

Der SQL Server läuft.
Bis jemand DELETE FROM ohne WHERE schickt.
Oder die Festplatte stirbt.
Oder die Stromversorgung abschaltet, weil irgendwo jemand bohrt.

Dann zeigt sich, ob Du ein Backup hast –
oder nur Hoffnung.

Was ich unter Backup-Strategie verstehe

Eine gute Backup-Strategie besteht aus:

  • Regelmäßigen, automatisierten Sicherungen
  • Richtiger Kombination aus Full, Diff und Log
  • Klar definiertem Aufbewahrungszeitraum
  • Tests, ob sich das Ganze auch wiederherstellen lässt
  • Speicherort außerhalb des Servers

Die drei Ebenen: Full, Differential, Log

TypBeschreibungZweck
FullKomplettes Abbild der DBBasis für Restore
DifferentialÄnderungen seit letztem Full-BackupSchneller als neues Full
LogAlle Transaktionen seit letztem BackupPoint-in-Time Recovery

Du brauchst alle drei, um flexibel und sicher zu sein.

Schritt 1: Vollbackup planen

BACKUP DATABASE [MeineDatenbank]
TO DISK = 'D:\Backups\MeineDatenbank_FULL.bak'
WITH INIT, COMPRESSION, STATS = 10;

Läuft bei mir sonntags nachts.
Komprimiert spart Platz und Zeit.

Schritt 2: Differential-Backup ergänzen

BACKUP DATABASE [MeineDatenbank]
TO DISK = 'D:\Backups\MeineDatenbank_DIFF.bak'
WITH DIFFERENTIAL, COMPRESSION, STATS = 10;

Läuft täglich außer Sonntag.
Schneller als Full – reicht meistens.

Schritt 3: Log-Backups stündlich

BACKUP LOG [MeineDatenbank]
TO DISK = 'D:\Backups\MeineDatenbank_LOG.trn'
WITH INIT, STATS = 5;

Läuft bei mir stündlich.
Nur sinnvoll im Full- oder Bulk-Logged-Recovery-Model.

Wichtiger Hinweis: Recovery Model prüfen

SELECT name, recovery_model_desc
FROM sys.databases
WHERE name = 'MeineDatenbank';

Nur mit FULL oder BULK_LOGGED kannst Du Logs sinnvoll sichern.
Bei SIMPLE geht’s nicht – da ist’s direkt weg.

Schritt 4: Sicherung testen

RESTORE VERIFYONLY
FROM DISK = 'D:\Backups\MeineDatenbank_FULL.bak';

Läuft bei mir nach jedem Full-Backup automatisch.

Schritt 5: Wiederherstellung regelmäßig proben

RESTORE DATABASE MeineDatenbank_Test
FROM DISK = 'D:\Backups\MeineDatenbank_FULL.bak'
WITH MOVE 'MeineDatenbank' TO 'D:\Restore\MeineDatenbank_Test.mdf',
     MOVE 'MeineDatenbank_log' TO 'D:\Restore\MeineDatenbank_Test.ldf',
     REPLACE, STATS = 10;

Ohne Restore-Test ist jedes Backup nur ein gutes Gefühl.

Speicherorte trennen

  • Backup nicht auf der gleichen Partition wie die DB
  • Zusätzliche Kopie auf Netzlaufwerk
  • Optional: Cloud-Backup (z. B. Azure Blob Storage)

PowerShell + Robocopy helfen beim Verteilen:

robocopy D:\Backups \\nas\sql-backups\ /MIR /R:2 /W:5

Automatisierung per SQL Server Agent

Für jede Backup-Art einen eigenen Job:

  • FullBackup_Sonntag
  • DiffBackup_Tag
  • LogBackup_Stündlich

Mit Rückmeldung per Mail:

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'SQL-Backup',
    @recipients = 'admin@firma.de',
    @subject = 'Backup erfolgreich',
    @body = 'Das tägliche Differential-Backup wurde erfolgreich erstellt.';

Tabelle: Typische Fehler und wie ich sie vermeide

ProblemLösung
Keine Log-BackupsRecovery-Model prüfen + Job anlegen
Backups nur lokal gespeichertzusätzliche Kopie auf NAS oder Cloud
Kein Restore-TestRestore auf Testinstanz automatisieren
Differentials zu großFull-Backup zu selten
.bak-Dateien überschriebenDateinamen mit Zeitstempel speichern

Mein Setup für KMU

TypIntervallZielordner
FullSo, 02:00 UhrD:\Backups\Full
DifferentialMo–Sa, 02:00 UhrD:\Backups\Diff
LogstündlichD:\Backups\Log
Restore-Test1× monatlichD:\Restore\Test
Externe Kopietäglich\NAS\SQL-Backups

Ein Backup, das nicht automatisch läuft, ist keins.

Ein Backup, das Du nicht zurückspielen kannst, ist Zeitverschwendung.

Bau Dir eine Strategie.
Teste sie.
Vertrau nicht der Hoffnung – sondern dem Restore.

Kategorien:

Keine Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert