Jump to content

Frage zum Point in Time Restore einer Datenbank


lukin
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo!

 

Normalerweise führe ich die Point in Time Wiederherstellung einer SQL Datenbank wie folgt durch:

 

- Tail-Log Backup durchführen (Sicherung des aktuellen Transaktionsprotokolls)

- Letztes Datenbankbackup mit WITH NORECOVERY wiederherstellen

- Erforderliche Transaktionslogs bis zum gewünschten Zeitpunkt wiederherstellen

 

Im MSDN ist unter How to: Restore to a Point in Time (SQL Server Management Studio) allerdings auch die Rede von einem Point in Time Restore nur über die Datenbankwiederherstellung. Ich habe das mal wie folgt getestet:

 

- Vollständiges Backup der Datenbank um 10:30

- Daten um 10:45 geändert

- Daten um 10:50 geändert

- Backup des Transaktionslog um 10:55

- Datenbank wiederhergestellt und dabei einen Zeitpunkt von 10:47 ausgewählt

 

Merkwürdigerweise wird in diesem Fall aber nicht der Stand von 10:47 (mit den von 10:45 geänderten Daten) wiederhergestellt, sondern nur der letzte von 10:50. Datenbank überschreiben ist aktiviert.

 

Führe ich die Wiederherstellung dagegen manuell so wie oben beschrieben aus (also erst DB mit WITH NO RECOVERY, dann Transaktionslogs), funktioniert es richtig und ich bekomme die Daten von 10:45 wieder.

 

Müsste mit dem von Microsoft im MSDN beschriebenen Weg nicht auch ein Point in Time Restore möglich sein? Oder mache ich hier einen Denkfehler?

Link zu diesem Kommentar

Es heißt dort "To restore to a point in time". Vom Wiederherstellen der DB mit WITH NORECOVERY und dem anschließenden Restore von Logs sehe ich da nichts (natürlich ist das in einem anderen Bereich auch beschrieben, aber eben nicht in diesem Artikel).

 

Vielleicht ist der Artikel nur missverständlich geschrieben.

 

Abers es muss ja auch einen Grund geben, warum man im Assistenten zur Wiederherstellung einer Datenbank auch einen genauen Zeitpunkt angeben kann. Deshalb und aufgrund des Artikels gehe ich davon aus, dass die Wiederherstellung inkl. Rollforward anhand der Logs bis zum gewünschten Zeitpunkt automatisch passiert. Und so ist es ja auch: Allerdings findet die Wiederherstellung des Logfiles immer bis zum letztmöglichen Zeitpunkt statt.

 

To restore to a point in time

--------------------------------------------------------------------------------

 

1.After you connect to the appropriate instance of the Microsoft SQL Server Database Engine, in Object Explorer, click the server name to expand the server tree.

 

2.Expand Databases. Depending on the database, either select a user database or expand System Databases, and then select a system database.

 

3.Right-click the database, point to Tasks, and then click Restore.

 

4.Depending on whether you are restoring data backups or just transaction logs (for a database that is already in the restoring state), click either Database or Transaction Log.

 

5.On the General page, the name of the restoring database appears in the To database list box. To create a new database, enter its name in the list box.

 

6.The location of the point-in-time option depends on whether you are restoring data backups or just transaction log backups:

 

◦Restore Database: The To a point in time option is in the Destination for restore section.

 

◦Restore Transaction Log: The Point in time option is in the Restore to section.

 

7.The default point in time is Most recent possible. To select a specific date and time, click the (...) browse button.

 

8.In the Point in Time Restore dialog box, click A specific date and time.

 

1.In the Date list box, enter or select a date.

 

2.In the Time list box, enter or select a time.

 

9.To specify the source and location of the backup sets to restore, click one of the following options:

 

◦From database

Enter a database name in the list box.

 

◦From device

Click the (...) browse button. In the Specify Backup dialog box, select one of the listed device types in the Backup media list box. To select one or more devices for the Backup location list box, click Add.

After you add the devices you want to the Backup location list box, click OK to return to the General page.

 

10.After you have specified a specific point in time, only the backups that are required to restore to that point in time are selected in the Restore column of the Select the backup sets to restore grid. These selected backups make up the recommended restore plan for your point-in-time restore. You should use only the selected backups for your point-in-time restore operation.

 

For information about the columns in the Select the backup sets to restore grid, see Restore Database (General Page).

 

11.To view or select the advanced options, click Options in the Select a pagepane.

 

12.In the Restore options panel, you can choose any of the following options, if appropriate for your situation: [...]

 

13.Optionally, you can restore the database to a new location by specifying a new restore destination for each file in the Restore the database files as grid. For more information about this grid, see Restore Database (Options Page).

 

14.The Recovery state panel determines the state of the database after the restore operation. The default behavior is:

 

◦Leave the database ready for use by rolling back the uncommitted transactions. Additional transaction logs cannot be restored. (RESTORE WITH RECOVERY)

Link zu diesem Kommentar
Abers es muss ja auch einen Grund geben, warum man im Assistenten zur Wiederherstellung einer Datenbank auch einen genauen Zeitpunkt angeben kann. Deshalb und aufgrund des Artikels gehe ich davon aus, dass die Wiederherstellung inkl. Rollforward anhand der Logs bis zum gewünschten Zeitpunkt automatisch passiert. Und so ist es ja auch: Allerdings findet die Wiederherstellung des Logfiles immer bis zum letztmöglichen Zeitpunkt statt.

Wofür gibts du denn den Wiederherstellungszeitpunkt an? Für die Datenbank oder für das Logfile?

Das Thema hat übrigens auch (falsch und alt: Frank Kalis) Christoph Muthmann mal sehr eingehend beleuchtet in einem meiner Meinung nach sehr guten Artikel: Sichern und Wiederherstellen von Datenbanken

 

Gruß

bearbeitet von phoenixcp
Link zu diesem Kommentar
Wofür gibts du denn den Wiederherstellungszeitpunkt an? Für die Datenbank oder für das Logfile?

 

Für die Datenbank. Es geht doch die ganze Zeit um die Point in Time Wiederherstellung beim Restore einer Datenbank. Noch mal:

 

- Ich habe z.B. ein Datenbankbackup von 10:30 Uhr und ein Transaktionslog Backup von 11:00 Uhr

- Ich rufe den Assistent zur Datenbankwiederherstellung auf

- Ich gebe einen exakten Zeitpunkt an, zu dem die Datenbank wiederhergestellt werden soll, z.B. 10:45 Uhr.

- Die Datenbanksicherung und das Transaktionslog werden automatisch ausgewählt

- Ich starte die Wiederherstellung (mit WITH RECOVERY)

 

Während der Wiederherstellung sehe ich, dass die Datenbank kurz in den Status "Wird wiederhergestellt" wird. Es sieht also für mich wie folgt aus:

 

- Datenbank wird zuerst automatisch mit WITH NORECOVERY wiederhergestellt

- Transaktionslog wird wiederhergestellt

- Datenbank wird wieder online gebracht

 

Das ist also quasi der normale Vorgang (erst DB Backup wiederherstellen mit WITH NORECOVERY, dann die Logs wiederherstellen) in automatisch. Und so verstehe ich den Artikel auch. Das Problem ist nur folgendes:

 

- Egal welchen Zeitpunkt ich angebe, es wird immer bis zum letzten Stand wiederhergestellt. In diesem Fall also bis 11:00 Uhr und nicht 10:45 Uhr.

bearbeitet von lukin
Link zu diesem Kommentar
Hi,

 

ich habe die Frage auch noch in einem englischsprachigen Forum gestellt und dort kann jemand mein Problem reproduzieren:

 

Question about Point in Time Restore through Management Studio

 

Vielleicht kann es hier ebenfalls mal jemand testen?

 

Danke

 

Dazu wäre es ganz spannend wenn du uns noch ein paar Rahmenparameter wie SQL Server Version, Patchset, etc. mitteilen könntest. ;)

Link zu diesem Kommentar

Ahh, das hatte ich in der Tat vergessen. Es ist ein SQL Server 2008 ohne SP1 und kumulative Update-Pakete. In den Release Notes von SP1 und dem Post SP1 Update habe ich bzgl. der Situation nichts gefunden. Updaten kann ich momentan nicht, da sich das System in Produktion befindet.

 

Vielleicht könnte es also mal jemand testen - dauert ja maximal 5 Minuten.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...