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
Typ | Beschreibung | Zweck |
---|---|---|
Full | Komplettes Abbild der DB | Basis für Restore |
Differential | Änderungen seit letztem Full-Backup | Schneller als neues Full |
Log | Alle Transaktionen seit letztem Backup | Point-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
Problem | Lösung |
---|---|
Keine Log-Backups | Recovery-Model prüfen + Job anlegen |
Backups nur lokal gespeichert | zusätzliche Kopie auf NAS oder Cloud |
Kein Restore-Test | Restore auf Testinstanz automatisieren |
Differentials zu groß | Full-Backup zu selten |
.bak -Dateien überschrieben | Dateinamen mit Zeitstempel speichern |
Mein Setup für KMU
Typ | Intervall | Zielordner |
---|---|---|
Full | So, 02:00 Uhr | D:\Backups\Full |
Differential | Mo–Sa, 02:00 Uhr | D:\Backups\Diff |
Log | stündlich | D:\Backups\Log |
Restore-Test | 1× monatlich | D:\Restore\Test |
Externe Kopie | tä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.
Keine Antworten