it-swarm.com.de

Wie bekomme ich einige gelöschte Datensätze zurück?

Ich habe versehentlich rund 2.000.000 Datensätze aus einer Remote-SQL Server 2008-Tabelle gelöscht. Der Server gewährt mir keinen Zugriff auf die Sicherungsdateien auf der Serverseite.

Gibt es eine Möglichkeit, diese Aufzeichnungen zurückzugewinnen?

49
user755

Befindet sich Ihre Datenbank im vollständigen Wiederherstellungsmodus?

  • Wenn ja, führen Sie Transaktionsprotokollsicherungen durch?

    • Wenn ja, haben Sie ein Sicherungsprogramm wie Quest LiteSpeed, Red Gate SQL Backup oder Idera SQLSafe?
      • Wenn ja, können diese Dienstprogramme Objekte aus Sicherungsdateien (einschließlich der vollständigen und Transaktionsprotokolle) wiederherstellen - aber zu erklären, wie diese verwendet werden, geht über den Rahmen meiner Möglichkeiten hinaus. Wenden Sie sich an den Anbieter, um Anweisungen zu erhalten.
      • Wenn nein, stellen Sie die vollständigen Sicherungs- und Transaktionsprotokolle als Datenbank mit einem anderen Namen wieder her. (Überschreiben Sie die vorhandene Datenbank nicht.) Sie können eine sekundengenaue Kopie des Objekts abrufen, bevor der Löschvorgang ausgeführt wurde. Sie müssen jedoch den stopat-Teil des Wiederherstellungsbefehls verwenden, um dies anzugeben wann die Wiederherstellung der Befehle beendet werden soll. Sie müssen anhalten, bevor das Löschen erfolgt ist.
    • Wenn nein, holen Sie sich eine Kopie eines Dienstprogramms zum Protokolllesen wie Quest LiteSpeed ​​oder Apex SQL Log. Diese Dienstprogramme können eine Verbindung zum Datenbankserver herstellen, die Protokolldatei untersuchen und Sie beim Rückgängigmachen von Transaktionen unterstützen. Ich bin mir nicht sicher, ob die Demoversionen funktionieren werden, aber die kostenpflichtigen definitiv.
  • Wenn nein (nicht im vollständigen Wiederherstellungsmodus), stellen Sie die letzte vollständige Sicherung als Datenbank mit einem anderen Namen wieder her. (Überschreiben Sie nicht die Datenbank, die Sie bereits haben.) Von dort aus können Sie alle Datensätze wiederherstellen, die zum Zeitpunkt der Sicherung online waren, aber Sie verlieren alle Änderungen seitdem.

118
Brent Ozar

SQL Server führt Protokolle für jeden gelöschten Datensatz. Sie können diese Protokolle über die SQL Server-Funktion fn_dblog Abfragen.

SELECT [RowLog Contents 0] 
FROM   sys.fn_dblog(NULL, NULL) 
WHERE  
       AllocUnitName = 'dbo.TableName'        
   AND Context IN ( 'LCX_MARK_AS_GHOST', 'LCX_HEAP' )        
   AND Operation in ( 'LOP_DELETE_ROWS' )   
;

Dieses Protokoll ist jedoch im Hex-Format und Sie müssen dieses Hex-Format in Ihre tatsächlichen Daten konvertieren.

Der folgende Artikel hilft Ihnen dabei, die gelöschten Datensätze wie oben definiert wiederherzustellen:

http://raresql.com/2011/10/22/how-to-recover-deleted-data-from-sql-sever/

30
user1059637

Leider können wir Ihnen ohne viele weitere Informationen nicht weiterhelfen. Aus Ihrer Frage geht jedoch hervor, dass Sie scheinbar 2 Millionen Datensätze aus Ihrer Datenbank gelöscht haben. Höchstwahrscheinlich können Sie diese Informationen nicht wiederherstellen, es sei denn, Sie haben eine vollständige Protokollierung in Ihrer Datenbank und erwerben einige sehr spezifische Tools.

Wenn Sie detaillierter beschreiben können, was Sie Ihrer Meinung nach getan haben und warum Sie das Gefühl haben, dass Sie die Aufzeichnungen nicht zurückerhalten können, und die Organisation Ihrer Datenbank beschreiben können, können wir Ihnen möglicherweise ein wenig mehr helfen.

Einige allgemeine Ratschläge: Wenn Sie glauben, 2 Millionen Datensätze gelöscht zu haben, sind Sie wahrscheinlich gerade ein wenig ausgeflippt. Sie sollten also eine fünfminütige Pause einlegen, sich beruhigen und das Problem erneut untersuchen. Außerdem sollten Sie Ihrem Chef sofort mitteilen, ob dies vernünftig ist (wecken Sie niemanden um 2 Uhr morgens auf, um es ihm mitzuteilen) und ob Sie an einer Lösung arbeiten. Es ist besser zuzugeben, was passiert ist, als verzweifelt zu versuchen, sich zu erholen und möglicherweise die Sache noch schlimmer zu machen und die Details zu verbergen. Wenn Sie wissen, dass Ihr Chef auf irgendeine Weise helfen kann, können Sie das Problem beheben. Wie gesagt, nur ein paar allgemeine Ratschläge.

22
jcolebrand