Ups! Sie haben gerade einen UPDATE-Befehl ausgeführt, ohne dabei eine WHERE-Bedingung anzugeben und dadurch eine ganze Tabelle überschrieben. Wie können Sie die Daten retten?
Falls Sie vorher eine Datensicherung durchgeführt haben, können Sie die Daten ganz einfach wiederherstellen. Die Standardlösungen sind:
- Spielen Sie die Sicherung wieder zurück und überschreiben Sie die vorhandene Datenbank
- Falls nach der Panne noch weitere Daten geschrieben wurden oder ein Überschreiben der Datenbank nicht möglich ist:
- Spielen Sie die Sicherung auf einen zweiten (Test)Server zurück
- Nutzen Sie den Export Wizard in SQL Server Management Server, um die Daten zu exportieren
- Importieren Sie die “sauberen” Daten in die Originaldatenbank
Falls Sie aber keine Sicherung haben, können Sie immer noch die Daten retten, indem Sie die Änderungen aus dem Datenbankprotokoll lesen.
Das Transaktionsprotokoll enthält alle Änderungen, die Sie ausgeführt haben. Solange dieses Protokoll nicht geleert wurde, können Sie ApexSQL Log benutzen, um die Änderungen auszulesen.
ApexSQL Log kann die falsch abgesetzten Befehle auslesen und rückgängig machen, damit Sie Ihr UPDATE erneut ausführen und die WHERE-Bedingung anwenden können.
Dazu müssen Sie::
-
ApexSQL Log starten
-
Verbinden Sie sich mit der Datenbank
-
Über Filter Options wählen Sie den Zeitraum aus, wann der Fehler passiert ist:/p>
-
Wählen Sie Update row unter Operations:
-
Wählen Sie unter Tables die betroffene Tabelle aus:
- Falls möglich, schränken Sie die Suche auch nach Benutzer und/oder Applikation weiter ein
- Klicken Sie Open
-
Um ein Skript zu erstellen und die gefundenen Änderungen rückgängig zu machen:
- Führen Sie die Befehle aus
Sobald die Befehle ausgeführt wurden, sind alle versehentlich ausgeführten Änderungen verschwunden und die Daten sind wieder sauber.
Falls Sie versehentlich Ihre Daten ändern und keine Datenbanksicherung haben, nutzen Sie ApexSQL Log.
Übersetzer: William Durkin
July 29, 2015