Ich habe eine Situation, die nicht leicht herauszufinden ist, und dachte, ich würde in diesem Forum fragen, ob andere Vorschläge haben könnten.
Ich verwende SQL Server 2008 R2 Standard SP3 unter Windows Server 2008R2 Enterprise.
Eine Datenbank musste gewartet werden, und danach musste ich sie auf einem anderen Server wiederherstellen. Ich habe eine vollständige Datenbank-Sicherung mit COPY_ONLY sowie einen Satz von 4 tlog-Sicherungen.
- Erstellen Sie vor dem Start tlogbackup1
- Wechsel von
FULL
zuBULK_LOGGED
Wiederherstellungsmodell - Neue Dateigruppe hinzufügen
- Datei zur neuen Dateigruppe hinzufügen
- Setzen Sie newfilegroup auf default
- in Tabelle auswählen (auf neue Dateigruppe)
- Original-Tabelle fallen lassen
- Originaldatei löschen
- ursprüngliche Dateigruppe löschen
- Ändern Sie den Namen der neuen Tabelle entsprechend der ursprünglichen Tabelle
- Ändern Sie den Dateinamen der neuen Dateigruppe entsprechend der ursprünglichen Dateigruppe
- Ändern Sie den Dateinamen im Katalog so, dass er mit dem ursprünglichen Dateinamen übereinstimmt
- Ändern Sie den Dateinamen auf Betriebssystemebene so, dass er mit dem ursprünglichen Dateinamen übereinstimmt
- Setzen Sie die Standard-Dateigruppe auf das Original
- db online bringen
- Wechsel von
BULK_LOGGED
zuFULL
Wiederherstellungsmodell - Nachdem alle Schritte abgeschlossen sind, erstellen Sie tlogbackup2
Für die Wiederherstellung aller Sicherungen muss WITH MOVE verwendet werden, da sich die Laufwerksbuchstaben auf dem Wiederherstellungsserver geändert haben.
Wiederherstellungsschritte:
RESTORE database SomeDB FROM DISK = 'D:\REPRO\SomeDB.bak'
WITH
MOVE 'SystemData' TO 'D:\SQLDATA\SomeDB.mdf'
,MOVE 'SystemDataPDS' TO 'D:\SqlData\SomeDB.ndf'
,MOVE 'SystemData_log' TO 'D:\SQLLogs\SomeDB.LDF'
,NORECOVERY
,stats = 1
RESTORE LOG SomeDB FROM DISK = 'D:\REPRO\tlogbackup1.trn'
WITH
MOVE 'SystemData' TO 'D:\SQLDATA\SomeDB.mdf'
,MOVE 'SystemDataPDS' TO 'D:\SqlData\SomeDB.ndf'
,MOVE 'SystemData_log' TO 'D:\SQLLogs\SomeDB.LDF'
,NORECOVERY
,stats = 1
RESTORE LOG SomeDB FROM DISK = 'D:\REPRO\tlogbackup2.trn'
WITH
MOVE 'SystemData' TO 'D:\SQLDATA\SomeDB.mdf'
,MOVE 'SystemDataPDS' TO 'D:\SqlData\SomeDB.ndf'
,MOVE 'SystemData_log' TO 'D:\SQLLogs\SomeDB.LDF'
,NORECOVERY
,stats = 1
Die endgültige tlog-Wiederherstellung erreicht 100% und schlägt dann mit Fehler 3456 fehl:
368 Seiten für die Datenbank 'SomeDB', Datei 'SystemData' in Datei 1 verarbeitet.
Verarbeitete 7656520 Seiten für die Datenbank 'SomeDB', Datei 'SystemDataPDS' in Datei 1.
Verarbeitete 172430 Seiten für die Datenbank 'SomeDB', Datei 'SystemData_log' in Datei 1.
Meldung 3456, Ebene 16,
Status 1, Zeile 1 Protokolldatensatz (210388: 123648: 232) für Transaktions-ID (0: 1016710921) auf Seite (4: 8088), Datenbank 'SomeDB' (Datenbank-ID 6) konnte nicht wiederholt werden. . Seite: LSN = (0: 0: 1), Typ = 11. Protokoll: OpCode = 4, Kontext 11, PrevPageLSN: (210388: 122007: 1). Stellen Sie eine Sicherung der Datenbank wieder her oder reparieren Sie die Datenbank. Meldung 3013, Ebene 16, Status 1, Zeile 1 RESTORE LOG wird abnormal beendet.
Nur um zu überprüfen, ob das vollständige DB-Backup in Ordnung war, habe ich es wiederhergestellt CHECKDB
und es gab keine Fehler.
Alle Rückmeldungen sind willkommen.
Danke im Voraus,
Ned Otter