SQL Server Backup und Restore mit PowerShell – Automatisierung und Integritätsprüfung

3 PowerShell-Funktionen für zuverlässige SQL Server Backup-Automatisierung, Restore-Prozesse mit AlwaysOn-Unterstützung und schnelle Integritätsprüfung via RESTORE VERIFYONLY – ohne tatsächliches Restore und ohne Produktionsrisiko.

3 Funktionen FULL / DIFF / LOG AlwaysOn-fähig

Backup & Restore – Funktionen im Überblick

Invoke-sqmUserDatabaseBackup – SQL Server Backup PowerShell automatisieren: FULL, DIFF und LOG mit Logging

Was macht die Funktion?

Erstellt Benutzerdatenbank-Backups des Typs FULL, DIFFERENTIAL oder LOG mit vollständigem Logging und strukturierter Fehlerbehandlung. Das Backup-Verzeichnis wird automatisch angelegt, der Dateiname enthält Zeitstempel und Backup-Typ. Alle Backup-Vorgänge werden in eine zentrale Log-Datei geschrieben. Unterstützt COMPRESSION, CHECKSUM und COPY_ONLY.

Wann nutzt man sie?

Als Alternative oder Ergänzung zu Ola Hallengren wenn ein direkter PowerShell-Aufruf ohne SQL Agent Job benötigt wird. In CI/CD-Pipelines vor Applikations-Deployments für ein schnelles COPY_ONLY Backup. Im Notfall für ein manuelles Ad-hoc-Backup mit vollständiger Protokollierung.

Typische Probleme

  • Fehlender Speicherplatz wird erst beim Backup-Fehler bemerkt – kein Pre-Check
  • Backup-Dateien ohne Zeitstempel im Namen werden bei erneutem Lauf überschrieben
  • Keine Unterscheidung zwischen COPY_ONLY und regulärem Backup – bricht die Backup-Kette

Vorteile

  • Automatischer Speicherplatz-Pre-Check verhindert fehlgeschlagene Backups
  • Zeitgestempelter Dateiname und strukturierte Verzeichnisstruktur (Instanz\Datenbank\Typ)
  • CHECKSUM-Option erkennt Backup-Korruption bereits beim Schreiben
# FULL Backup einer Datenbank mit Kompression und Checksum
Invoke-sqmUserDatabaseBackup -SqlInstance "SQL01" -Database "Produktion" -BackupType "FULL" -Compress -Checksum

# COPY_ONLY Backup vor Deployment (unterbricht nicht die Backup-Kette)
Invoke-sqmUserDatabaseBackup -SqlInstance "SQL01" -Database "Produktion" -BackupType "FULL" -CopyOnly

Invoke-sqmRestoreDatabase – SQL Server Datenbank Restore PowerShell: Single-Server, AlwaysOn, Point-in-Time

Was macht die Funktion?

Führt einen vollständigen Datenbank-Restore durch – von der Backup-Datei-Ermittlung über FULL/DIFF/LOG-Sequenz bis zur abschließenden Verifikation. Unterstützt Single-Server-Restore mit RECOVERY sowie AlwaysOn-Restore mit NORECOVERY für das anschließende AutoSeeding. Point-in-Time-Restore via -StopAt-Parameter möglich.

Wann nutzt man sie?

Bei Datenverlust oder versehentlich gelöschten Daten für einen schnellen Point-in-Time-Restore. Bei der Migration einer Datenbank auf eine neue Instanz oder einen neuen Server. Als automatisierten Restore-Test in einer DR-Testumgebung um die Wiederherstellbarkeit regelmäßig zu verifizieren.

Typische Probleme

  • Falsche Restore-Sequenz (FULL → DIFF → LOG) führt zu inkonsistenten Datenbanken
  • Mit RECOVERY abgeschlossene Restore-Kette kann nicht für AlwaysOn weiterverwendet werden
  • Kein Test ob die Restore-Kette vollständig ist – fehlende LOG-Backups werden erst beim Restore bemerkt

Vorteile

  • Automatische Ermittlung der korrekten Backup-Sequenz aus dem Backup-Verzeichnis
  • NORECOVERY-Modus für nahtlose Integration in AlwaysOn AutoSeeding-Prozesse
  • Vollständige Protokollierung aller Restore-Schritte mit Zeitstempel und Status
# Standard-Restore mit automatischer Backup-Sequenz-Ermittlung
Invoke-sqmRestoreDatabase -SqlInstance "SQL02" -Database "Produktion" -BackupPath "\\NAS\Backups\SQL01\Produktion"

# Point-in-Time Restore auf gestern 14:00 Uhr
Invoke-sqmRestoreDatabase -SqlInstance "SQL02" -Database "Produktion" -BackupPath "\\NAS\Backups" -StopAt "2026-05-15 14:00:00"

Test-sqmBackupIntegrity – SQL Server Backup Integrität prüfen PowerShell mit RESTORE VERIFYONLY ohne Restore

Was macht die Funktion?

Prüft Backup-Dateien via RESTORE VERIFYONLY auf strukturelle Integrität – ohne die Datenbank tatsächlich wiederherzustellen. Die Funktion kann einzelne Dateien, ein Verzeichnis oder alle Backups der letzten N Tage prüfen. Ergebnisse werden als PowerShell-Objekte ausgegeben und in eine CSV-Datei protokolliert.

Wann nutzt man sie?

Als täglicher SQL Agent Job zur automatischen Verifikation aller neuen Backup-Dateien. Nach einem Storage-Ausfall oder Netzwerkfehler zur Überprüfung ob Backups komplett und valide sind. Im DR-Test um ohne vollständigen Restore die Verwendbarkeit der Backups zu bestätigen.

Typische Probleme

  • Korrupte Backup-Dateien werden erst beim tatsächlichen Restore-Notfall bemerkt
  • Backups auf defekten Speichermedien erscheinen als vorhanden sind aber nicht lesbar
  • Kein Nachweis für Compliance-Audit dass Backups regelmäßig verifiziert werden

Vorteile

  • Schnell und sicher – keine Produktionsdatenbank wird beeinträchtigt
  • Automatisierbar als SQL Agent Job mit täglicher E-Mail-Benachrichtigung bei Fehlern
  • Liefert Compliance-Nachweise: jede Prüfung wird mit Datum und Ergebnis protokolliert
# Alle Backups der letzten 7 Tage prüfen
Test-sqmBackupIntegrity -SqlInstance "SQL01" -BackupPath "\\NAS\Backups\SQL01" -DaysBack 7

# Einzelne Backup-Datei auf Integrität prüfen
Test-sqmBackupIntegrity -SqlInstance "SQL01" -BackupFile "\\NAS\Backups\Produktion_FULL_20260515.bak"
Zurück zum Index