Wenn Sie versehentlich einen DROP- oder DELETE-Befehl für eine Tabelle mit einer falschen WHERE-Klausel ausgeführt haben und wichtige Datensätze verloren gegangen sind, können Sie diese mit einer der folgenden Methoden wiederherstellen.
Hinweis: Die Trunkierungsvorgänge können nicht wiederhergestellt werden. Nur die Löschvorgänge können wiederhergestellt werden.
Methoden zur Wiederherstellung gelöschter Tabellensätze in SQL Server
Methode 1 – Verwendung der Log Sequence Number (LSN)
Hinweis: Diese Methode funktioniert nicht, wenn die Sicherung des Transaktionsprotokolls beschädigt ist oder fehlt. Fahren Sie in diesem Fall mit der nächsten Methode fort.
Jeder SQL Server-Transaktionsprotokolldatensatz wird durch eine Log-Sequenznummer (LSN) eindeutig identifiziert. Sie können Wiederherstellungssequenzen konstruieren, indem Sie die LSN eines Protokollsatzes verwenden, bei dem ein bedeutendes Ereignis aufgetreten ist.
Nehmen wir ein Beispiel, um zu verstehen, wie Sie die Log-Sequenznummer-Methode verwenden können, um gelöschte Tabellensätze wiederherzustellen. In diesem Beispiel werden wir eine Datenbank und eine Tabelle erstellen, Zeilen in die Tabelle einfügen, einige Zeilen löschen, Informationen über gelöschte Daten abrufen und die Daten wiederherstellen.
Schritte zur Wiederherstellung gelöschter Datensätze aus einer SQL-Tabelle mit LSN
In diesem Abschnitt werden wir eine Testdatenbank und eine Tabelle erstellen, auf der wir eine DELETE-Operation durchführen werden. Dann werden wir die gelöschten Daten finden und sie mit Hilfe von LSN wiederherstellen.
Schritt 1: Erstellen einer Datenbank
Führen Sie die folgende Abfrage aus, um eine Datenbank namens “RecoverDeletedRecords” und eine Tabelle namens “Employee” zu erstellen:
USE [master];
GO
CREATE DATABASE RecoverDeletedRecords;
GO
USE RecoverDeletedRecords;
GO
CREATE TABLE [Mitarbeiter] (
[Sr.Nr.] INT IDENTITÄT,
[Datum] DATETIME DEFAULT GETDATE (),
[Stadt] CHAR (25) DEFAULT ‘Stadt1’);
Abbildung 1 – Datenbank in SSMS erstellen Schritt 2: Daten in die Tabelle einfügen
Wir haben eine Tabelle mit dem Namen “RecoverDeletedRecords” und eine Tabelle “Employee” mit drei Spalten erstellt. Jetzt werden wir Zeilen in die Tabelle einfügen, indem wir die folgende Abfrage ausführen:
USE RecoverDeletedRecords;
GO
INSERT INTO Employee DEFAULT VALUES;
GO 100
Abbildung 2 – Datensätze in eine neue Tabelle einfügen Schritt 3: Zeilen aus der Tabelle löschen
Löschen wir nun einige Zeilen, indem wir Folgendes ausführen:
USE RecoverDeletedRecords
Weiter
DELETE Mitarbeiter
WHERE [Sr.Nr] < 10
GO
Select * from Mitarbeiter
Abbildung 3 – Tabellenzeilen löschen Wie in der obigen Abbildung zu sehen ist, wurden alle Zeilen mit einer Sr.Nr. kleiner als 10 aus der Tabelle “Mitarbeiter” gelöscht.
Schritt 4: Informationen über gelöschte Zeilen abrufen
Als nächstes werden wir Informationen über die gelöschten Zeilen erhalten, indem wir das Transaktionsprotokoll durchsuchen:
USE RecoverDeletedRecords
GO
SELECT
[Aktuelle LSN],
[Transaktions-ID],
Betrieb,
Kontext,
AllocUnitName
VON
fn_dblog(NULL, NULL)
WHERE
Vorgang = ‘LOP_DELETE_ROWS’
Abbildung 4 – Transaktions-ID der gelöschten Zeilen Nachdem wir die Transaktions-IDs der gelöschten Zeilen erhalten haben, müssen wir den Zeitpunkt ermitteln, zu dem die Zeilen gelöscht wurden.
Schritt 5: Log-Sequenznummer des LOP_BEGIN_XACT Log-Records ermitteln
Um den genauen Zeitpunkt zu ermitteln, zu dem die Zeilen gelöscht wurden, müssen wir die Transaktions-ID verwenden, um die LSN des Protokollsatzes LOP_BEGIN_XACT einer Transaktion zu erhalten:
USE RecoverDeletedRecords
GO
SELECT
[Aktuelle LSN],
Betrieb,
[Transaktions-ID],
[Anfangszeit],
[Transaktionsname],
[Transaktions-SID]
VON
fn_dblog(NULL, NULL)
WHERE
[Transaktions-ID] = ‘0000:0000020e’
UND
[Vorgang] = ‘LOP_BEGIN_XACT’
Abbildung 5 – Aktuelle LSN des Transaktionsprotokolls Im obigen Screenshot sehen wir die aktuelle LSN der Transaktion zusammen mit Details wie dem Zeitpunkt ‘2021/03/15 19:36:59:337’, als eine DELETE-Anweisung mit der LSN ‘00000014:0000001a:0001’ unter der Transaktions-ID ‘0000:0000020e’ ausgeführt wurde. Um die Daten der gelöschten SQL-Datenbanktabelle wiederherzustellen, fahren Sie mit dem nächsten Schritt fort.
Schritt 6: Gelöschte Datensätze in SQL Server wiederherstellen
Um die gelöschten SQL-Tabellendatensätze wiederherzustellen, müssen wir die LSN-Werte von hexadezimaler in dezimale Form umwandeln. Fügen Sie dazu ‘0x’ vor der Log-Sequenznummer ein, wie im folgenden Code gezeigt:
-Wiederherstellung Vollsicherung mit Norecovery.
RESTORE DATABASE RecoverDeletedRecords_COPY
FROM DISK = ‘C:\Programme\Microsoft SQL Server\MSSQL10_50.STELLAR\MSSQL\Backup\RecoverDeletedRecords.bak’
MIT
MOVE ‘RecoverDeletedRecords’ TO ‘C:\Program Files\Microsoft SQL Server\MSSQL10_50.STELLAR\MSSQL\Backup\RecoverDeletedRecords.mdf’,
MOVE ‘RecoverDeletedRecords_log’ TO ‘C:\Program Files\Microsoft SQL Server\MSSQL10_50.STELLAR\MSSQL\Backup\RecoverDeletedRecords.ldf’,
ERSETZEN, NICHT WIEDERHERSTELLEN;
GO
-Wiederherstellung der Log-Sicherung mit der Option STOPBEFOREMARK zur Wiederherstellung der genauen LSN.
RESTORE LOG RecoverDeletedRecords_COPY
VON
DISK = N’C:\Programme\Microsoft SQL Server\MSSQL10_50.STELLAR\MSSQL\Backup\RecoverDeletedRecords_tlogbackup.trn’
MIT
STOPBEFOREMARK = ‘lsn:0x00000014:0000001a:0001’
Abbildung 6 – Gelöschte Datensätze wiederherstellen Nachdem Ihre Daten wiederhergestellt sind, überprüfen Sie, ob die gelöschten Datensätze wiederhergestellt wurden. Führen Sie dazu die folgende Abfrage aus, um die ersten zehn Zeilen der Tabelle zu sehen, die (in Schritt 3) gelöscht wurden.
USE RecoverDeletedRecords_COPY
GO
SELECT * from Mitarbeiter
Wenn die gelöschten Tabellendatensätze nicht wiederhergestellt wurden, versuchen Sie, ein SQL-Wiederherstellungstool wie Stellar Repair for MS SQL zu verwenden, um die gelöschten Daten wiederherzustellen.
Hinweis: Ersetzen Sie im obigen Code den Pfad ‘C:\Programme\Microsoft SQL Server\MSSQL10_50.STELLAR\MSSQL\Backup\RecoverDeletedRecords.bak’ durch den Pfad, in dem sich Ihre Sicherungsdatei befindet. Ersetzen Sie auch den Pfad der .mdf- und .ldf-Dateien durch den Pfad, in dem Sie die Datenbankdateien gespeichert haben.
Methode 2 – Verwendung von SQL-Wiederherstellungssoftware
Die SQL-Wiederherstellungssoftware von Stellar® kann Ihnen helfen, alle gelöschten Datensätze in einer SQL Server-Datenbank in wenigen einfachen Schritten wiederherzustellen. Neben den gelöschten Daten kann die Software auch alle anderen Objekte wie Ansichten, Auslöser, gespeicherte Prozeduren usw. wiederherstellen, wobei die Datenintegrität erhalten bleibt.
Bevor wir weitermachen
Bevor Sie die Software zum Wiederherstellen der Datensätze verwenden, müssen Sie sicherstellen, dass Ihr System die folgenden Voraussetzungen erfüllt:
- Zunächst müssen Sie SQL Server installieren. Sie können jeden unter Windows installierten SQL Server verwenden.
- Zweitens, stellen Sie sicher, dass Sie SQL Server Management Studio (SSMS) installiert haben.
- Stellar Repair für MS SQL-Software
Schritte zur Wiederherstellung gelöschter Tabellensätze mit Stellar Repair for MS SQL
Laden Sie die Demoversion der SQL Recovery Software herunter, um gelöschte Zeilen oder beschädigte Datenbanken wiederherzustellen:
- Starten Sie Stellar Repair for MS SQL Software. Die Hauptschnittstelle der Software öffnet sich mit der Anweisung, Ihre SQL Server-Datenbank zu stoppen und eine Kopie an einem anderen Ort zu erstellen. Drücken Sie OK.
Abbildung 7 – Stellar Repair für MS SQL Hauptschnittstelle
- Durchsuchen Sie die SQL-Datenbank-MDF-Datei, die Sie reparieren möchten. Wenn Sie den Speicherort der MDF-Datei nicht kennen, klicken Sie auf Suchen, um die Datei zu finden und auszuwählen:
Abbildung 8 – Datenbank-MDF-Datei in Software auswählen Hinweis: Wenn Sie nicht wissen, wo sich Ihre Datenbank befindet, können Sie sie in SSMS in den Datenbankeigenschaften auf der Seite Datendatei finden (siehe Abbildung unten).
Abbildung 9 – Datenbankstandort in SSMS prüfen
- Nachdem Sie die Datenbankdatei ausgewählt haben, wählen Sie die Option Gelöschte Datensätze einbeziehen und klicken Sie auf Reparieren.
Abbildung 10 – Option Gelöschte Datensätze einbeziehen
- Die Software fordert Sie auf, einen geeigneten Scanmodus für die Reparatur der Datenbankdatei auszuwählen. Wählen Sie “Standard-Scan” oder “Erweiterter Scan” und klicken Sie dann auf OK.
Abbildung 11 – Auswahl des Scanmodus
- Klicken Sie auf OK, wenn sich das Meldungsfeld “Reparatur abgeschlossen” öffnet.
Abbildung 12 – Meldungsfeld “Reparatur abgeschlossen
- Die Software zeigt eine Vorschau der wiederherstellbaren Tabellensätze. Sie stellt auch andere DB-Objekte wie Ansichten, Synonyme, gespeicherte Prozeduren, Funktionen, Regeln, Standardwerte, Datentypen, Auslöser, Sequenzen und Baugruppen wieder her. Die Software zeigt auch einen Protokollbericht an, der Informationen wie die Datenbankgröße, die Sortierung, den Pfad der mdf-Datei und die Liste der Tabellen und Objekte enthält.
Abbildung 13 – Protokollbericht
- Klicken Sie anschließend im Menü Datei auf Speichern, um die wiederhergestellten Daten zu speichern.
Abbildung 14 – Datenbank speichern
- Im Dialogfeld “Datenbank speichern” können Sie wählen, ob Sie die wiederhergestellten Daten in den Dateiformaten MDF, CSV, HTML oder XLS (Excel) speichern möchten. In diesem Beispiel werden wir MSSQL wählen:
Abbildung 15 – Speichern von Optionen
- Sie können eine neue Datenbank erstellen oder online mit der Datenbank arbeiten. Sie können in einer anderen SQL Server-Instanz wiederherstellen und den Authentifizierungstyp angeben, d.h. Windows-Authentifizierung oder SQL Server-Authentifizierung. Außerdem können Sie den Speicherort der Dateien der Datenbank angeben:
Abbildung 16 – Authentifizierungstyp auswählen
- Klicken Sie auf Speichern.
Die wiederhergestellten Tabellensätze und andere ausgewählte Daten werden in der reparierten MDF-Datei gespeichert.
Sehen Sie sich den kompletten Arbeitsprozess der SQL Recovery Software an:
Schlussfolgerung
In diesem Artikel haben wir gelernt, wie man gelöschte Datensätze in SQL Server wiederherstellt. Diese Lösungen können in jeder SQL Server-Version unter Windows funktionieren. Wenn Sie eine vollständige Datenbanksicherung zur Verfügung haben, können Sie versuchen, gelöschte Datensätze mit Hilfe des Transaktionsprotokolls mit Log Sequence Number (LSN) wiederherzustellen. Wenn die Sicherung beschädigt ist, verwenden Sie Stellar Repair for MS SQL, um die gelöschten Daten in SQL Server oder in anderen Formaten wie Comma Separated Value (CSV)-Dateien, HTML oder XLS wiederherzustellen.
Die SQL-Datenbank-Reparatur-Software hilft nicht nur bei der Wiederherstellung von gelöschten Zeilen, sondern stellt auch die SQL-Datenbank beschädigt durch Virenbefall, Hardware-Ausfall, oder andere Gründe.
Was this article helpful?