Wissen · Backup & Restore Advanced · Teil 2

SQL Server Backup und Restore: den Ernstfall planen

Bei Backup und Restore liegen die schwierigen Fragen oft zwischen den einzelnen Befehlen. Welches Full gehört zum Diff? Wo liegen die Logs, die auf einem anderen Replikat entstanden sind? Ist das Zertifikat auch dann verfügbar, wenn der Ursprungsserver ausgefallen ist? Und wie viel der vereinbarten Wiederanlaufzeit bleibt nach Beschaffung und Kopieren für den eigentlichen Restore? Dieser Teil vertieft den Weg zum richtigen Datenstand, mit eigenen Labproben auf SQL Server 2022 und 2025.

22.10.2026 · ca. 18 Minuten · Lab vom 22.10.2026 · SQL Server 2022 und 2025

Lab SQL Server 2022 · 202513 Bilder zum MitmachenTeil 1 Grundlagen ←Mitraten Quiz ↓

Kurz gesagt

  • Planen Sie eine vollständige Route. Für jeden relevanten Ausfallfall führt sie zu einem bestimmten Datenstand.
  • Prüfen Sie alle Abhängigkeiten: Dateimenge, Basis- und Logbeziehungen, Schlüssel und Zielumgebung.
  • Messen Sie den Weg bis zur freigegebenen Anwendung, nicht nur die Dauer des Restorebefehls.
  • Jobstatus und Sicherungsalter sind wichtige Signale, aber kein vollständiger Nachweis.

MerksatzPlanen und testen Sie einen konkreten Wiederherstellungsweg.

FehlvorstellungDateialter oder die neueste Datei genügt zur Auswahl einer Restorekette.
RichtigDie neueste Datei kann zu spät liegen, zur falschen Basis gehören oder nur ein Teil eines Stripe-Sets sein. Entscheidend sind Basis, Logabdeckung und die konkrete Auswahl.

Wie kommen Sie zum richtigen Datenstand?

SQL Server stellt für Backup und Restore leistungsfähige native Funktionen bereit. Ola Hallengrens Maintenance Solution automatisiert deren Einsatz. Ein belastbarer Betrieb verbindet diese Bausteine mit einem konkreten Wiederherstellungsziel, vollständigen Abhängigkeiten und wiederholbaren Proben.

Dieser Beitrag setzt Kenntnisse zu Full-, Diff- und Logbackups voraus; Teil 1 erklärt diese Grundlagen. Uhrzeiten und Betriebsziele in den Bildern sind schematische Beispiele, soweit sie nicht ausdrücklich als Labbeleg gekennzeichnet sind.

Typische Anlässe

Springen Sie direkt zu Ihrem Fall:

Unterwegs lösen wir vier verbreitete Fehlannahmen auf:

  1. „Ein zusätzliches Full unterbricht die Logkette.“ Ein normales Full setzt die Differentialbasis neu. Die Logbackupfolge ist davon getrennt.

    aufgelöst in: Drei Beziehungen ↓
  2. „Die neueste Datei ist die richtige.“ Ein Full nach dem Zielzeitpunkt lässt sich nicht zurückspulen.

    aufgelöst in: Restore auf einen Zeitpunkt ↓
  3. „Sieben Tage aufbewahren heißt sieben Tage wiederherstellen.“ Die benötigte Full-Basis kann älter als sieben Tage sein.

    aufgelöst in: Retention ↓
  4. „35 Minuten Restore passen in eine Stunde RTO.“ Nur wenn alle übrigen Phasen bis zur Freigabe in die Restzeit passen.

    aufgelöst in: RTO ↓

Eine Route hat drei verschiedene Beziehungen

Das Bild aus Teil 1 bleibt: Wir suchen einen Startpunkt, gegebenenfalls eine Abkürzung und weitere Abschnitte bis zum Ziel. Im Advanced-Fall unterscheiden wir dabei drei Dinge.

  1. Die DifferentialbasisEin Differentialbackup gehört zu einer bestimmten Datenbasis. Ein normales Full setzt diese Basis neu. Ein älteres Full und ein Diff auf einer neueren Basis passen deshalb nicht zusammen.
  2. Die LogabdeckungDie erforderlichen Logs müssen den benötigten Bereich lückenlos abdecken. Ein zusätzliches normales Full unterbricht die Logbackupkette nicht. Es kann lediglich einen weiteren Einstieg für andere Restorewege schaffen.
  3. Die konkrete AuswahlFür den Zielzeitpunkt wählen wir eine tatsächlich verfügbare Kombination. Die neueste Datei kann zu spät liegen, zur falschen Basis gehören oder nur ein Teil eines Stripe-Sets sein.
Bild 1Schema

Drei Spuren, eine Zeitlinie

Mitten in der Folge entsteht ein zusätzliches Full. Schalten Sie um: Was ändert sich, was bleibt?

Normales Full F1: Spätere Diffs beziehen sich auf F1. Die Logkette L1 bis L4 läuft unverändert weiter. Route zum Ziel: F1 + D1 + L4.Copy-only-Full C1: Die Basis von D1 bleibt F0; C1 ist selbst keine Diff-Basis. Die Logkette läuft unverändert weiter. Route zum Ziel: F0 + D1 + L4.

Mit COPY_ONLY statt normalem Full: Die Basislinie bliebe bei F0, die Logspur unverändert; Route zum Ziel F0 + D1 + L4.

FFullCCopy-only-FullDDiffLLogZiel
Schema. Differentialbasis, Logfolge und Dateiauswahl sind verschiedene Beziehungen: Das zusätzliche normale Full verschiebt nur die Basislinie. Dass es die Logkette nicht unterbricht, belegt die Microsoft-Dokumentation; im Lab war das kein eigener Versuch.

SQL Server verwaltet dafür unter anderem Log Sequence Numbers, kurz LSNs, Basisinformationen und Recovery-Fork-Bezüge. Das sind technische Beziehungen und keine Uhrzeiten. Zur Inventur gehören die Backupheader, verfügbare Medienfamilien und bei Bedarf die Historie in msdb. Für einen Desasterfall muss die Dateiauswahl auch dann möglich sein, wenn die ursprüngliche msdb nicht erreichbar ist (Microsoft: Restore Sequences).

Eine praktische Inventur liefert pro Backupset: Datenbankidentität, Art, Beginn und Ende, Copy-only-Flag, relevante LSNs, Differentialbasis, Medienposition, sämtliche benötigten Dateien und Verschlüsselungsabhängigkeit. Namen und Dateidatum helfen bei der Orientierung. Die technische Zuordnung ersetzen sie nicht.

COPY_ONLY: zusätzliche Sicherungen ohne neue Differentialbasis

Ein Entwickler benötigt eine aktuelle Kopie. Der reguläre Plan verwendet ein Full vom Sonntag und tägliche Diffs. Wird am Dienstag ein zusätzliches normales Full erstellt, basieren spätere Diffs auf diesem neuen Full. Wer beim Restore weiter nur das Sonntags-Full berücksichtigt, kann scheitern.

Für die zusätzliche Kopie ist ein gezielt gewähltes COPY_ONLY-Full häufig sinnvoll:

Zusätzliches Full ohne neue Diff-BasisT-SQL
BACKUP DATABASE [BackupDemo]
  TO DISK = N'D:\SQLBackup\BackupDemo_extra_copy_01.bak'
  WITH COPY_ONLY, CHECKSUM, COMPRESSION;

Dieses Full lässt die bestehende Differentialbasis unverändert. Es kann wie ein Full wiederhergestellt werden, wird aber selbst keine neue Differentialbasis. Ein danach entstandenes Diff lässt sich deshalb nicht allein deshalb auf diese Kopie anwenden, weil sie zeitlich kurz davor lag (Microsoft: Copy-only Backups).

Labfrage Ändert ein Copy-only-Full die Basis des nächsten Diff?

Aufbau Full F0 erstellen, Daten ändern, zusätzliches Copy-only-Full C0 erstellen, erneut ändern und Diff D2 sichern. Später folgen ein normales Full F1 und ein neues Diff D3.

Bild 2LabSQL Server 2022 und 2025 identisch

Das Copy-only-Labor

Die Sicherungen in der Reihenfolge des Versuchs. Bögen oben: zu welchem Full ein Diff gehört.

KombinationErgebnis (SQL Server 2022 und 2025)
F0 + D24 Marker
C0 + D2Fehler 3136
F0 + D3Fehler 3136
F1 + D35 Marker
Lab, SQL Server 2022 und 2025 mit identischem Ergebnis. Copy-only lässt die Diff-Basis stehen; ein normales Full setzt sie neu. Markeranzahl nach Restore und vollständigem CHECKDB. D1 stammt aus dem Grundlagenversuch in Teil 1.

Beobachtung Auf SQL Server 2022 und 2025 lässt sich F0 plus D2 wiederherstellen. C0 plus D2 wird mit Fehler 3136 zurückgewiesen. Nach einem späteren normalen Full F1 benötigt das neue Diff D3 die Basis F1; F0 plus D3 scheitert ebenfalls.

Folgerung Zusätzliche Sicherungen gehören in die Betriebsregeln. Benennen Sie ihren Zweck und entscheiden Sie bewusst, ob sie die Diff-Basis verändern sollen. Das ist eine andere Frage als die Fortsetzung der Logkette.

Wenn ein Logbackup fehlt

Full F0, Log L1, Log L2, Log L3: Für den vorgesehenen Restoreweg brauchen wir die nötige Abdeckung. Fehlt L2, kann L3 die darin fehlenden Logbereiche nicht einfach ersetzen. SQL Server kann den Restore mit Fehler 4305 zurückweisen.

Im Lab erzeugen wir genau diese Lücke, indem wir L2 beim Einspielen auslassen. Nach Bereitstellung und Anwendung des vorhandenen L2 lässt sich der Ablauf fortsetzen. Wir löschen im Versuch keine unbekannten Produktionsdateien und simulieren keinen vollständigen Serververlust.

Bild 3Lab

Die Lücke vor L3

L3 ist intakt. Spielen Sie die Folge ein, dann stellen Sie L2 aus einer anderen Ablage bereit.

Bereit. Die Folge ist noch nicht eingespielt.

L1 → L3: Fehler 4305

Originalmeldung (SQL Server 2022, englisch; 2025 gleich, mit anderen LSN-Werten)

Msg 4305, Level 16, State 1, Server …, Line 1
The log in this backup set begins at LSN 42000000053600001, which is too recent to apply to the database. An earlier log backup that includes LSN 42000000049600001 can be restored.

Die Datenbank steht nach L1. L3 setzt später an; der Bereich dazwischen steckt in L2. Die jüngere Datei kann diesen Abschnitt nicht ersetzen.

F0 → L1 → L2 → L3 vollständig angewendet

Ergebnis ist der jüngste Logstand mit drei Markern, derselbe Stand wie rechts in Bild 0.

Mit bereitgestelltem L2 ist die Folge F0 → L1 → L2 → L3 vollständig anwendbar im Lab bestätigt

Schema Und ein späteres Full?

Ein späteres Full kann spätere Wiederherstellungsziele erreichbar machen. Es rekonstruiert den fehlenden historischen Verlauf nicht.

Lab, SQL Server 2022 und 2025. Ein fehlender erforderlicher Abschnitt blockiert diesen Weg; die jüngste Datei hilft hier nicht. Im Versuch wurde L2 beim Einspielen ausgelassen, nicht gelöscht.

Für die Praxis bedeutet das: zuerst alle Speicherorte, Kopien und erzeugenden Jobs inventarisieren. Prüfen Sie, ob eine anderweitig vorhandene Datei die Lücke schließt oder eine andere geeignete Datenbasis einen neuen Restoreweg eröffnet.

Auch ein weiterer regulärer Logbackupjob kann relevant sein: Werden Logs auf einen anderen Speicher gesichert, liegen benötigte Abschnitte womöglich dort. Mehrere Werkzeuge müssen in einen gemeinsamen Plan passen. Copy-only-Logbackups haben andere Auswirkungen auf den regulären Archivierungspunkt und sind gezielt zu beurteilen.

@ChangeBackupType='Y' in Ola sucht bei fehlenden Voraussetzungen einen durchführbaren Sicherungstyp. Es repariert keine verlorene historische Datei. Der tatsächlich erzeugte Typ muss deshalb Teil der Überwachung sein.

Restore auf einen bestimmten Zeitpunkt

Ein versehentliches Löschen um 14:07 ist ein anderer Fall als ein Hardwareausfall, bei dem Sie den jüngsten erreichbaren Stand wollen. Für den Zustand unmittelbar vor dem Löschen brauchen Sie eine geeignete Datenbasis vor dem Ziel und die erforderlichen Logs bis zu diesem Zeitpunkt.

Ein Full, das erst nach dem gewünschten Zeitpunkt endet, lässt sich nicht rückwärts dorthin abspielen. Wählen Sie gegebenenfalls ein älteres Full. Ein Diff darf den gewünschten Zeitpunkt ebenfalls nicht bereits überschritten haben.

Bild 4SchemaUhrzeiten: Planungsbeispiel

Welche Route erreicht das Ziel?

Full um 00:00, Diff um 12:00, ein zusätzliches Full um 15:00, Logs alle zwei Stunden. Verschieben Sie die Zielzeit.

Ziel 14:06:50. Route: F 00:00 → D 12:00 → L7 (12:00–14:00) → L8 (14:00–16:00) mit STOPAT. Das Full von 15:00 endet nach dem Ziel und lässt sich nicht zurückspulen.

FgewähltLfür dieses Ziel nicht nötigFnach dem Ziel: gesperrtZiel
Schema, Uhrzeiten als Planungsbeispiel. Ein späteres Full lässt sich nicht zum früheren Ziel zurückspulen; ein älteres Full mit passender Logabdeckung erreicht es. Ein Diff gilt nur, wenn es vor dem Ziel liegt und zur gewählten Basis gehört.

Ein schematischer Ablauf unter einem neuen Testnamen lautet:

Point-in-time-Restore unter neuem Namen (Beispiel)T-SQL
DECLARE @TargetTime datetime = '2026-10-22T14:06:50';

RESTORE DATABASE [BackupDemo_PointTest]
  FROM DISK = N'D:\SQLBackup\BackupDemo_full_01.bak'
  WITH MOVE N'BackupDemo'
         TO N'D:\SQLData\BackupDemo_PointTest.mdf',
       MOVE N'BackupDemo_log'
         TO N'D:\SQLLog\BackupDemo_PointTest.ldf',
       NORECOVERY, CHECKSUM;

RESTORE LOG [BackupDemo_PointTest]
  FROM DISK = N'D:\SQLBackup\BackupDemo_log_01.trn'
  WITH NORECOVERY, CHECKSUM, STOPAT = @TargetTime;

RESTORE LOG [BackupDemo_PointTest]
  FROM DISK = N'D:\SQLBackup\BackupDemo_log_02.trn'
  WITH NORECOVERY, CHECKSUM, STOPAT = @TargetTime;

-- Erst nach Anwendung der erforderlichen Logs bis zum Ziel:
RESTORE DATABASE [BackupDemo_PointTest] WITH RECOVERY;

Dateien, logische Dateinamen und Zeitpunkt sind Beispiele. Die benötigte Logliste muss für die tatsächlichen Backupsets bestimmt werden. Microsoft empfiehlt, den gleichen Zielzeitpunkt in jedem Logrestore anzugeben. Prüfen Sie anschließend, dass der gewollte Datenstand erreicht wurde. Zeitzone, Serverzeit, Anwendungstimestamps und ein möglicher Sommerzeitwechsel gehören zur Zuordnung (Microsoft: Point-in-time Restore).

Im Lab Vor einer gezielten Löschung wird die SQL Server Zeit festgehalten. Der STOPAT-Restore enthält den zuvor vorhandenen Datensatz und nicht die danach eingefügte Änderung. Der Restore bis zum jüngsten Logstand enthält dagegen die spätere Änderung. Gezählt werden daher nicht nur Zeilen; wir prüfen die konkreten Marker.

Bild 5Lab

STOPAT gegen jüngsten Logstand

Reihenfolge wie im Lab, Abstände schematisch. Zwischen festgehaltenem Zielzeitpunkt und Eingriff lagen zwei Sekunden.

  1. F0mit Marker 1
  2. + 2INSERT
  3. L1Log
  4. + 3INSERT
  5. L2Log
  6. ZielZeit festgehalten
  7. − 3DELETE · 2 s später
  8. + 4INSERT
  9. L3Log

Restore bis zum Ziel STOPAT

123

3 Zeilen · Marker 3 vorhanden, Marker 4 fehlt

Restore bis zum jüngsten Logstand

124

3 Zeilen · nach DELETE von 3 und INSERT von 4

Lab, SQL Server 2022 und 2025. Gleiche Zeilenzahl kann verschiedene Datenstände bedeuten: Vor dem Ziel existiert Marker 3; nach der Löschung existiert stattdessen Marker 4. Geprüft wurden die konkreten Marker, nicht nur die Anzahl.

Bei BULK_LOGGED kann ein Logbackup mit minimal protokollierten Änderungen keinen beliebigen STOPAT innerhalb dieses Backups liefern. Die Einschränkung betrifft diesen Abschnitt. Beziehen Sie geplante Massenoperationen in die Wiederherstellungsentscheidung ein.

Tail-log: noch nicht gesicherte Änderungen erfassen

Nach dem letzten regulären Logbackup können weitere Änderungen existieren. Wenn die nötigen Voraussetzungen bestehen, sichert ein Tail-log-Backup den noch nicht gesicherten Logrest. Das kann beim Wiederherstellen zum jüngsten möglichen Stand Datenverlust vermeiden.

Für eine noch online befindliche Datenbank zeigt das folgende Beispiel einen bewussten Wiederherstellungseingriff.

Tail-log-Backup (Wiederherstellungseingriff)T-SQL
-- ACHTUNG: bewusster Wiederherstellungseingriff, kein Job.
-- NORECOVERY versetzt die Quelle in RESTORING; normale Nutzung ist danach unterbrochen.
-- Nur im abgestimmten Wiederherstellungsablauf ausführen.
BACKUP LOG [BackupDemo]
  TO DISK = N'D:\SQLBackup\BackupDemo_tail_01.trn'
  WITH NORECOVERY, CHECKSUM;
Bild 6Lab

Der Logrest wird gesichert

Nach dem letzten regulären Logbackup kommt noch eine Änderung. Das Tail-log-Backup nimmt sie mit.

Quelle ONLINERESTORING

  1. L3letztes reguläres Logbackup
  2. +Änderung, noch in keinem Backup
  3. TailBACKUP LOG … WITH NORECOVERY

Separates Ziel

F0 L1 L2 L3 Tail

4 Marker, einschließlich der Änderung aus dem Tail

Lab, SQL Server 2022 und 2025. NORECOVERY bewahrt hier den Logrest und beendet die normale Nutzung der Quelle. Wiederhergestellt wurde auf einem separaten Ziel; die Quelle wurde danach im Lab wieder in Betrieb genommen.

Im Lab wird eine nur im Tail vorhandene Änderung gesichert und auf einem separaten Ziel zusammen mit den vorherigen Backups wiederhergestellt. Bei einem echten Schaden hängt die Möglichkeit davon ab, welche Logdateien und Datenbankbestandteile noch brauchbar sind. Ein verlorenes oder unbrauchbares Log kann auch diesen Weg versperren (Microsoft: Tail-log Backups).

Für einen Zielzeitpunkt, der bereits von vorhandenen Sicherungen abgedeckt wird, ist ein Tail-log-Backup nicht zur Erreichung dieses älteren Stands erforderlich. Ob Sie den aktuellen Rest vor weiteren Eingriffen zusätzlich bewahren müssen, bleibt eine Frage des konkreten Falls.

Ola im Betrieb: Auswahl, Ausführung und Ergebnis auseinanderhalten

Eine robuste Einrichtung beschreibt vier Ebenen:

EbeneZu klärende Frage
AuswahlWelche Datenbanken und Replikate soll dieser Lauf erfassen?
AusführungWelcher Sicherungstyp und welche Optionen werden tatsächlich ausgeführt?
Datei und KopieWelche vollständigen Backupsets sind am vorgesehenen Restoreort erreichbar?
WiederherstellungWelche Ziele wurden zuletzt damit erfolgreich getestet?

Für den nachvollziehbaren Einstieg sind explizite Optionen sinnvoll: @Checksum='Y', @Verify='Y', @LogToTable='Y', Kompression passend zu Edition und Last, Typwechsel bewusst festgelegt. @Execute='N' hilft bei der Prüfung erzeugter Befehle. Es erzeugt keinen Backup- oder Restorebeleg.

Ein kontrollierter Sonder-Full kann beispielsweise so vorbereitet werden:

Sonder-Full mit Ola, erst als VorschauT-SQL
DECLARE @ReturnCode int;
EXEC @ReturnCode = [DBA].dbo.DatabaseBackup
  @Databases = N'BackupDemo',
  @Directory = N'D:\SQLBackup',
  @BackupType = 'FULL',
  @CopyOnly = 'Y',
  @Compress = 'Y',
  @Checksum = 'Y',
  @Verify = 'Y',
  @ChangeBackupType = 'N',
  @CleanupTime = NULL,
  @LogToTable = 'Y',
  @Execute = 'N';
IF @ReturnCode <> 0
  THROW 50002, N'Sonderbackup fehlgeschlagen.', 1;

Vor Ausführung Auswahl und Ziel prüfen und anschließend @Execute='Y' verwenden. Auch hier ersetzt @Verify='Y' keinen vollständigen Restore.

Wichtig für die Überwachung: Datenbanken können wegen Recovery-Modell, Zustand, fehlender Basis oder AG-Präferenz übersprungen werden. Im Lab endet der LOG-Aufruf für eine SIMPLE-Datenbank erfolgreich, ohne ein Logbackup anzulegen. Ein Alarm nur auf fehlerhafte Jobs würde diese Abdeckungslücke nicht erkennen.

Bild 7Schemamit Lab-Hinweis

Sechs grüne Befehle, sieben Datenbanken

Links das Protokoll der Läufe, rechts das Sollinventar. Gleichen Sie beides ab.

CommandLog 6 Einträge

DatabaseNameCommandTypeErrorNumber
DB 1BACKUP_DATABASE0
DB 2BACKUP_DATABASE0
DB 3BACKUP_DATABASE0
DB 4BACKUP_DATABASE0
DB 5BACKUP_DATABASE0
DB 6BACKUP_DATABASE0

Sollinventar 7 Datenbanken

  • DB 1Backupset ✓
  • DB 2Backupset ✓
  • DB 3Backupset ✓
  • DB 4Backupset ✓
  • DB 5Backupset ✓
  • DB 6Backupset ✓
  • DB 7kein Backupset ✕
  1. AuswahlWelche Datenbanken?6 von 7 erfasstnicht geprüft
  2. AusführungWas lief tatsächlich?6 × ohne Fehler
  3. Datei und KopieAm Restoreort erreichbar?eigene Prüfung
  4. WiederherstellungZuletzt erfolgreich getestet?eigener Nachweis

Abgeglichen: Alle sechs Befehle liefen fehlerfrei. Die siebte erwartete Datenbank wurde trotzdem nicht gesichert.Das Protokoll allein zeigt sechs fehlerfreie Befehle.

Lab SimpleLab · Recovery SIMPLE

Olas Aufruf mit @BackupType='LOG' endet mit Rückgabewert 0; neue LOG-Backupsets: 0. Ein natives BACKUP LOG weist SQL Server für dieselbe Datenbank mit Fehler 4208 ab:

Msg 4208, Level 16, State 1, Server …, Line 1
The statement BACKUP LOG is not allowed while the recovery model is SIMPLE. Use BACKUP DATABASE or change the recovery model using ALTER DATABASE.

SIMPLE hat keinen regulären Logbackuppfad. Der erfolgreiche Ola-Aufruf belegt keinen Fehler der Maintenance Solution; er zeigt, weshalb die Sollabdeckung eine eigene Prüfung braucht.

Schema mit Lab-Hinweis. Protokoll und Sollabdeckung ergänzen sich: Erfolgreiche CommandLog-Zeilen decken nur einen Teil der erwarteten Datenbanken ab. Namen und Zeilen links sind ein Beispiel; Labwerte nur im markierten Streifen.

Vergleichen Sie deshalb das erwartete Datenbankinventar mit tatsächlich entstandenen Backupsets, erforderlichen Typen, deren Alter, Datei- und Kopierstatus. Führen Sie Restoretests als eigenen Nachweis. Ein CommandLog mit sechs erfolgreichen Befehlen beantwortet noch nicht, ob die siebte erwartete Datenbank gesichert wurde (Ola: Parameter und Verhalten, geprüfter Originalcode).

Retention: vom ältesten zugesagten Restorepunkt rückwärts denken

„Sieben Tage aufbewahren“ ist als Dateiregel mehrdeutig. Sollen alle Dateien nach sieben Tagen verschwinden? Oder muss jeder vereinbarte Zeitpunkt der vergangenen sieben Tage erreichbar sein? Für Letzteres kann die benötigte Full-Basis älter als sieben Tage sein.

Schematisches Beispiel: Das Restorefenster beginnt an einem Mittwochmittag. Das dafür benötigte Full stammt vom vorherigen Sonntag. Wenn Sie diese Basis rein nach Alter löschen, kann der älteste zugesagte Mittwoch trotz jüngerer Logs unerreichbar werden. Eine spätere Vollsicherung hilft nicht für ein früheres Ziel.

Bild 8SchemaPlanungsbeispiel

Sieben Tage Dateien oder sieben Tage Wiederherstellung?

Full sonntags, Diff täglich, Logs durchgehend. Zugesagt: Jeder Zeitpunkt der letzten sieben Tage ist erreichbar.

Ältestes zugesagtes Ziel: Mi, Woche 2, 12:00. Dafür nötig: Full vom So, Woche 2, 10,5 Tage alt. Nach Alter gelöscht: Dieses Full ist weg. Ziele von Mi, Woche 2, 12:00 bis zum Full vom So, Woche 3 sind unerreichbar, obwohl jüngere Diffs und Logs vorhanden sind.

Mit der Regel „abhängige Menge behalten“ bleiben das Full vom So, Woche 2, das Diff vom Mi, Woche 2, und die Logs ab dort erhalten; das ganze Fenster ist erreichbar.

FFullDDiffLogsFgelöscht

Das Bild erklärt die Anforderung. Es simuliert nicht den Cleanup-Algorithmus von Olas Maintenance Solution; deren @CleanupTime rechnet zudem in Stunden, nicht in Tagen. Ob Ihr Fenster hält, muss eine Probe des ältesten zugesagten Zeitpunkts zeigen.

Schema, Wochentage und Plan als Planungsbeispiel. Die benötigte Basis kann älter sein als das zugesagte Restorefenster. Löschgrenze für Dateien und Wiederherstellungsfenster sind zwei verschiedene Dinge.

Planen Sie deshalb pro zugesagtem Zielbereich die vollständige Menge aus Basis, gegebenenfalls Diff, erforderlichen Logs, allen Stripes und Schlüsseln. Berücksichtigen Sie erfolgreiche externe Kopien und deren eigene Lifecycle-Regeln. Die Platzplanung braucht Reserve für eine neue Generation, bevor eine alte entfernt wird.

Olas @CleanupTime arbeitet in Stunden, nicht Tagen. @CleanupMode='AFTER_BACKUP' ist der Standard; die Lösung hat Schutzlogik für abhängige Sicherungen. Das ist hilfreich, aber keine Abnahme Ihres individuellen historischen Restorefensters. Eine Umstellung auf BEFORE_BACKUP nur wegen knappen Platzes kann gerade die noch vorhandene Absicherung verringern (Ola: CleanupTime).

Backupdateien löschen, msdb-Historie bereinigen und CommandLog pflegen sind getrennte Aufgaben. sp_delete_backuphistory entfernt Historie, keine Backupdateien. Für URL-Ziele unterstützt Ola kein entsprechendes Datei-Cleanup; die Speicher-Lifecycle-Regeln müssen gesondert zu den Restoreabhängigkeiten passen.

Die wirksamste Gegenprobe ist ein Test des ältesten zugesagten Wiederherstellungszeitpunkts. Wer immer nur das jüngste Full wiederherstellt, prüft die schwierige Kante des Aufbewahrungsfensters nicht.

Vertiefung Schlüssel, Speicher und Replikate

Wenn die Sicherungsstrecke länger wird

Für Umgebungen mit Verschlüsselung, Objektspeicher oder Availability Groups. Für den RTO-Abschnitt sind diese Teile nicht nötig. Zum RTO springen ↓

Verschlüsselung: das Backup allein kann zu wenig sein

Bei nativer Backupverschlüsselung benötigt das Ziel das passende Zertifikat oder den asymmetrischen Schlüssel. Bei TDE-geschützten Datenbanken besteht ebenfalls eine Schlüsselabhängigkeit. TDE und ein zusätzlich eingesetztes Backupverschlüsselungszertifikat sind dabei unterschiedliche Ebenen.

Zum Wiederherstellungsbestand gehören deshalb Zertifikate, private Schlüssel beziehungsweise die dafür benötigten externen Schlüsselzugänge und die zugehörigen Geheimnisse. Sie müssen geschützt, erreichbar und ausreichend lange aufbewahrt werden. Eine Zertifikatsrotation macht alte Backups nicht automatisch vom alten Zertifikat unabhängig.

Bild 9Quellkonzeptim Lab nicht ausgeführt

Backup da, Schlüssel fehlt

Eine frische Zielinstanz und ein verschlüsseltes Backup. Spielen Sie das Schlüsselmaterial ein.

Gesicherter Schlüsselbestand getrennt aufbewahrt

  • Zertifikat
  • Privater Schlüssel
  • Zugehörige Geheimnisse

Frische Zielinstanz

  • Backupdateivorhanden
  • Zertifikatfehlteingespielt
  • Privater Schlüsselfehlteingespielt

Restore nicht möglichRestore möglich

Nach dem Einspielen von Zertifikat und privatem Schlüssel aus dem gesicherten Bestand ist der Restore laut Dokumentation möglich.

Quellkonzept nach der Microsoft-Dokumentation, im Lab nicht ausgeführt, kein Labresultat. Die frische Zielinstanz muss alle benötigten Schlüsselabhängigkeiten erfüllen, und zwar ausschließlich aus dem gesicherten Bestand.

Die aussagekräftige Probe verwendet eine frische Zielinstanz, auf der das Material zunächst fehlt, und richtet es ausschließlich aus dem gesicherten Bestand ein. Ein Restore auf dem Ursprungsserver prüft diesen Verlustfall nur begrenzt. Dieser Schlüsselverlustfall ist in unserer Labserie als Ausbau beschrieben, noch nicht ausgeführt (Microsoft: Backup Encryption, TDE-geschützte Datenbank übertragen).

Stripes, Kopien und geschützter Speicher

Mehrere Dateien hinter TO DISK teilen ein Backup in Medienfamilien auf. Diese Stripes sind gemeinsam benötigte Teile. Sie sind keine mehrfachen vollständigen Sicherungen. Im Lab scheitert die Verifikation mit nur einer von zwei Stripe-Dateien; mit beiden lässt sich die Datenbank wiederherstellen.

Bild 10Labrechts: Schema

Zwei Stripes sind ein Backup

Links ein Backup in zwei Medienfamilien, rechts zwei unabhängige Kopien. Welche Dateien stehen bereit?

Ein Backup, zwei Stripes

Zwei unabhängige Kopien Schema

Nur S1: Verify scheitert

Originalmeldung (SQL Server, englisch)

Msg 3132, Level 16, State 1, Server …, Line 1
The media set has 2 media families but only 1 are provided. All members must be provided.

Die Sicherung besteht aus zwei Medienfamilien. Eine allein ist kein vollständiges Backup.

S1 + S2: Restore mit 5 Markern, CHECKDB ohne Fehler

Erst beide Dateien zusammen ergeben die Sicherung.

Lab, SQL Server 2022 und 2025; rechte Hälfte Schema. Zwei Stripes bilden gemeinsam ein Backup. Eine unabhängige Kopie enthält dagegen den vollständigen Satz.

Mehrere unabhängige Kopien sind eine andere Maßnahme. Native Medienmirrors und Olas @MirrorDirectory haben eigene Anforderungen, einschließlich Editionsgrenzen. Mehrere @Directory-Ziele oder @NumberOfFiles dürfen deshalb nicht einfach als Kopienanzahl beschrieben werden (Microsoft: Backupmedien und Stripes).

Getrennte Kopien, getrennte Berechtigungen und gegebenenfalls unveränderbare Aufbewahrung sollten zum Ausfall- und Angriffsszenario passen. Ein URL-Ziel ist durch seine Adresse noch nicht unveränderbar. Speicherpolicy, Schreibverfahren, Löschrechte und Identitäten entscheiden.

laut Microsoft-Dokumentation · nicht im Lab getestet Versionsbeispiel: Microsoft dokumentiert direkte Backups in Azure container-level immutable storage für SQL Server 2025; ältere Engines und version-level immutability sind davon nicht pauschal umfasst. Das ist keine allgemeine Aussage über beliebige S3-, Azure- oder Appliance-Ziele. Dieser Speicherpfad wurde in unserem Lab nicht getestet (Microsoft: Backup to URL, Immutable Storage).

Availability Groups: Präferenz allein führt keinen Job aus

Jobs müssen auf den vorgesehenen Replikaten vorhanden sein, die Rollen- und Backuppräferenz auswerten und auf die benötigten Ziele zugreifen können. Ein Failover verteilt Ihre Jobs und Dateien nicht automatisch neu.

Bild 11Schema

Nach dem Rollenwechsel

Zwei Replikate, ein Backupjob, zwei Ablagen. Lösen Sie den Failover aus.

Gesondert prüfen

  • Jobs auf den vorgesehenen Replikaten vorhanden?
  • Rollen- und Backuppräferenz im Job ausgewertet?
  • Benötigte Ziele von dort erreichbar?
  • Wiederherstellung aus allen beteiligten Speicherorten geprobt?
Schema, kein Labresultat. Failover verteilt weder Ihre Jobs noch die Dateien automatisch. Die Backuppräferenz ist eine Regel, die der Job auswerten muss.

laut Microsoft-Dokumentation · nicht im Lab getestet Für unterstützte Enterprise-AG-Secondaries bis SQL Server 2022 gelten die bekannten Copy-only-Full- und regulären Logbackupmöglichkeiten. SQL Server 2025 erweitert die native Unterstützung um normale Full- und Differentialbackups auf Secondaries. Basic AGs haben gesonderte Einschränkungen; die Erweiterung darf nicht ungeprüft auf eine Standard-Edition-Topologie übertragen werden (Microsoft: Backups on Secondary Replicas).

Im geprüften Ola-Stand gibt es @AvailabilityGroups, die Datenbankauswahl AVAILABILITY_GROUP_DATABASES und @OverrideBackupPreference; einen Parameter @AvailabilityGroupBackup gibt es dort nicht. @AvailabilityGroups und @Databases werden nicht gleichzeitig gesetzt. Die tatsächliche Unterstützung hängt weiterhin von Engine, Edition, Rolle und Zustand ab.

Für die Abnahme gehören ein geplanter Rollenwechsel, die anschließend tatsächlich entstandenen Sicherungen und deren Wiederherstellung aus allen beteiligten Speicherorten zusammen. Dieser AG-Failovertest ist ein vorgeschlagenes Folgelab und kein Ergebnis der vorliegenden Einzelinstanztests.

RTO verbessern: den gesamten Ablauf messen

Die richtige Optimierung beginnt mit einer Zeitaufteilung: Bereitstellung, Zugriff auf Dateien und Schlüssel, Transfer, Full-, Diff- und Logrestore, Recovery, Konsistenzprüfung, Instanzobjekte und Anwendungsfreigabe.

Bild 12Planungsbeispiel

35 Minuten Restore. Reicht eine Stunde?

Ein RTO von 60 Minuten, ein Restore von 35 Minuten. Die übrigen Phasendauern sind frei gewählte Beispiele. Ändern Sie sie.

  1. 110 min
  2. 215 min
  3. 335 min
  4. 410 min
  5. 510 min

Summe 80 min RTO von 60 min um 20 min überschritten

Planungsbeispiel, keine Messung. Die SQL-Restorezeit ist ein Teil der Wiederanlaufzeit. Erst wenn Bereitstellung, Zugriff, Prüfungen und Anwendungsfreigabe in die verbleibende Zeit passen, ist das RTO eingehalten.

Kompression kann Übertragungs- und I/O-Aufwand reduzieren, kostet jedoch CPU. Stripes können geeignete I/O-Ressourcen besser ausnutzen; auf demselben Engpass entsteht daraus kein zusätzlicher physischer Durchsatz. BUFFERCOUNT, MAXTRANSFERSIZE oder zusätzliche Parallelität sind gezielte Messvariablen, keine universellen Beschleunigungsrezepte.

Ein anderer Mix aus Full, Diff und Log kann die einzuspielende Dateimenge verändern. Ein kleineres Backup kann trotzdem langsamer entstehen, und ein schneller Backupjob kann einen aufwendigen Restorepfad hinterlassen. Vergleichen Sie daher das ganze Verfahren unter repräsentativer Last und Größe. Die kleinen synthetischen Labdaten in dieser Reihe erlauben keine allgemeine RTO- oder Durchsatzempfehlung.

Zur freigegebenen Anwendung gehören häufig mehr als Userdatenbanken: Logins und SIDs, Agentjobs, Credentials, Zertifikate, Schnittstellen und abgestimmte Stände mehrerer Datenbanken. Gleicher STOPAT-Zeitpunkt und fehlerfreies CHECKDB beweisen allein keine fachlich konsistente Gesamtanwendung. Für zusammengehörige Datenbanken können vorab geplante markierte Transaktionen Teil eines geeigneten Verfahrens sein (Microsoft: Related Databases Consistently Recover).

Best Practices für fortgeschrittenen Betrieb

  1. Jeden Ausfallfall benennen. Versehentliche Änderung, Datenbankverlust, Serververlust und Verlust des Backupziels brauchen unterschiedliche Nachweise.
  2. Restorepfade inventarisieren. Basis, Logabdeckung, Recovery Forks, Medienpositionen, Stripes und Schlüssel zusammenführen.
  3. Zusatzbackups koordinieren. Normales Full, Copy-only-Full und zusätzliche Logjobs bewusst in den bestehenden Plan einordnen.
  4. Das älteste Ziel testen. Retention nicht nur am neuesten erfolgreichen Backup beurteilen.
  5. Schlüssel unabhängig prüfen. Frische Instanz aus gesichertem Material wiederherstellen; Zugriffe und Entschlüsselung tatsächlich testen.
  6. Fehler bis zum Verantwortlichen transportieren. Prozedur, Scheduler, Job und Benachrichtigung gemeinsam prüfen; Überspringen über die Abdeckungsprüfung erkennen.
  7. Typwechsel und Ausnahmen sichtbar halten. @ChangeBackupType, Mindestgrößen und -abstände sowie Replikatpräferenzen können die erwartete Menge ändern.
  8. RTO vollständig messen. Ein Restorebefehl ist ein Abschnitt des Wiederanlaufs. Fachliche Freigabe und Abhängigkeiten mitmessen.
  9. Updates kontrolliert übernehmen. Engine- und Ola-Version erfassen, Optionen vergleichen und Kernproben erneut durchführen.
  10. Ein zweites Teammitglied einbeziehen. Ein dokumentierter, erfolgreich übergebener Ablauf ist belastbarer als ausschließliches Personenwissen.

To-do-Listen

Eine Liste für den laufenden Betrieb, eine für den konkreten Problemfall. Ihr Häkchenstand bleibt nur in Ihrem Browser.

Betrieb und regelmäßige Probe

Bei einem konkreten Restoreproblem

Häufige Fragen

Unterbricht ein zusätzliches Full die Logkette?

Nein. Ein normales Full verändert die Differentialbasis. Die Logbackupfolge ist davon getrennt. Bild 1

Was bedeutet Fehler 3136?

Häufig passt ein Diff nicht zur zuvor wiederhergestellten Basis. Prüfen Sie Header, Basis und bisherige Restorefolge. Ein Dateiname oder derselbe Datenbankname beweist die Zuordnung nicht. Bild 2

Was bedeutet Fehler 4305?

Das einzuspielende Log beginnt für den aktuellen Restorestand zu spät. Suchen Sie die erforderliche vorherige Abdeckung und prüfen Sie, ob Sie den richtigen Wiederherstellungsweg gewählt haben. Bild 3

Kann Ola den Restore vollständig übernehmen?

DatabaseBackup erzeugt Sicherungen und kann sie verifizieren. Ein allgemeiner Restoreplan mit beliebiger Dateisuche, Zielzeitpunkt, Schlüsselbereitstellung und Anwendungsfreigabe ist dadurch nicht enthalten.

Bewahrt @CleanupTime = 168 sicher sieben Tage Point-in-time auf?

Das muss aus den erhaltenen Abhängigkeiten und einer Probe hervorgehen. Eine Stundenregel allein ist kein Nachweis eines vollständigen Restorefensters. Bild 8

Reichen identische Uhrzeiten bei mehreren Datenbanken?

Sie belegen noch keinen gemeinsamen fachlichen Transaktionszustand. Abhängigkeiten und geeignete Koordination müssen Teil des Verfahrens sein.

Machen Verschlüsselung und Immutable Storage Backups automatisch sicher?

Sie adressieren wichtige Risiken. Verfügbare Schlüssel, korrekte Speicherpolicies, vollständige Restorepfade und Tests bleiben erforderlich.

Wie oft sollten wir testen?

Leiten Sie die Häufigkeit aus Risiko und Änderungsrate ab und planen Sie sie verbindlich. Neue Versionen, neue Ziele, Schlüsselrotationen, Topologieänderungen oder ein geändertes Retentionsverfahren sind konkrete Anlässe für zusätzliche Proben. Eine pauschale Frequenz ersetzt diese Bewertung nicht.

Prüfen Sie Ihr Verständnis

Zwei Fragen aus dem Alltag. Überlegen Sie kurz, dann drehen Sie die Karte um.

  • Frage 1 · Diff-Basis

    Sie haben ein Full vom Sonntag, ein zusätzliches Copy-only-Full vom Dienstag und ein Diff vom Mittwoch. Auf welches Full gehört der Diff, sofern dazwischen kein weiteres normales Full entstanden ist?

    Auflösung

    Auf das Full vom Sonntag.

    Es ist die passende normale Full-Basis. Das Copy-only-Full hat sie nicht verändert und ist selbst keine Diff-Basis. Die tatsächliche Identität wird mit den Metadaten und dem Restore geprüft.

    Im Lab nachgestellt: Bild 2 ↑

  • Frage 2 · RTO

    Alle Dateien sind vorhanden, der Restore dauert 35 Minuten. Ist ein RTO von einer Stunde damit eingehalten?

    Auflösung

    Noch nicht entschieden.

    Erst wenn die übrigen vereinbarten Phasen einschließlich Bereitstellung, Zugriff, Prüfungen und Anwendungsfreigabe innerhalb der verbleibenden Zeit abgeschlossen sind. Die einzelne SQL-Dauer genügt dafür nicht.

    Zum Phasen-Rechner: Bild 12 ↑

Quiz

Finden Sie die richtige Route?

Jede Antwort wird sofort aufgelöst, mit Verweis auf die passende Stelle im Beitrag. Ohne Cookies.

Herkunft und Dank

Die SQL Server Maintenance Solution von Ola Hallengren automatisiert Sicherungen mit den nativen Funktionen von SQL Server und protokolliert, was sie tut. Quellcode und Dokumentation sind frei verfügbar, unter MIT-Lizenz (Repository). Danke an Ola Hallengren und an die Community, die die Lösung einsetzt, prüft und weiterträgt.

Wo dieser Beitrag Grenzen beschreibt, sind es Einsatzgrenzen und keine Mängel: DatabaseBackup sichert und verifiziert, den Restoreplan, das Sollinventar und die Proben bauen Sie darum herum. Genau diese Aufgabenteilung macht die Lösung nachvollziehbar.

Dieser Beitrag ist eigener Text mit eigenen Labproben. Ola Hallengren hat ihn weder geprüft noch freigegeben; Schlussfolgerungen und eventuelle Fehler sind unsere. Für Parameter und Verhalten ist Olas eigene Dokumentation maßgeblich. Geprüft haben wir den Stand von Commit 41617578 (Quellzeitstempel 12.09.2026); neuere Fassungen können sich anders verhalten.

Methode und Grenzen

Faktenstand 22.10.2026. Ola-Originalcode auf Commit 41617578643e722b790ea4d57ef80f8de38ae747 eingefroren. Das eigene Lab prüft ausgewählte native Restorepfade und Ola-Aufrufe auf SQL Server 2022 und 2025 unter Linux.

Aufbau und Prüfung im Detail

Engines: SQL Server 2022 CU27 (16.0.4295.3, Developer Edition) und SQL Server 2025 CU9 (17.0.5005.3, Enterprise Developer Edition), jeweils in einem Linux-Container, nacheinander mit identischen Grenzen: 2 CPUs, 3 GiB Container-Speicher, Max Server Memory 1.536 MB, ohne Netzwerkzugang. Standard-Kompatibilitätslevel der jeweiligen Engine.

Daten: rein synthetisch, wenige nummerierte Marker je Testdatenbank, darunter eine Datenbank mit Recovery SIMPLE. Jede Restoreprobe zählt die Marker und läuft mit vollständigem DBCC CHECKDB; bei STOPAT prüfen wir zusätzlich, welche Marker vorhanden sind.

Ola: Einzelinstallation von CommandLog.sql, CommandExecute.sql und DatabaseBackup.sql in einer eigenen Datenbank; kein vollständiger Installerlauf, keine zeitgesteuerten Jobs.

Ergebnis: 26 datenbasierte Prüfungen je Engine, alle bestanden (52 von 52). Beide Versionen zeigen in den ausgewählten Fällen dasselbe Funktionsverhalten. Gemessene Laufzeiten sind Ausführungsbelege kleiner Funktionsproben, keine Benchmarks und keine RTO-Messungen.

Nicht geprüft: keine produktive Windows-Integration, kein Server- oder Standortverlust, keine Availability Group, kein Objektspeicher, kein echtes Retentionsfenster, kein Schlüsselverlustfall. Ebenfalls nur dokumentationsgestützt: BULK_LOGGED, Systemdatenbanken, Scheduler und vollständige Anwendungswiederherstellung. Dass ein normales Full die Logkette nicht unterbricht, belegt die Microsoft-Dokumentation; einen eigenen Versuch dazu gab es nicht. Die betroffenen Bilder tragen deshalb „Schema“ oder „Quellkonzept“.

Weiterlesen