MDF-Datei wiederherstellen. So reparieren Sie eine beschädigte MS SQL Server-Datenbank

Manchmal kommt es vor, dass die Früchte jahrelanger Arbeit, die sich in der SQL-Datenbank befinden, in Gefahr sind. In diesem Artikel geht es darum, wie Sie Datenverlust verhindern und, falls doch, Daten aus den Überresten einer einst normalen Datenbank wiederherstellen können.

Also lasst uns anfangen. Die Situation ist wie folgt: Es gibt einen Server, auf dem 1C+SQL ausgeführt wird. Während SQL-Datenbanken ausgeführt wurden, wurde die Stromversorgung unterbrochen. Das Ergebnis ist bedauerlich: Die Basis befindet sich im verdächtigen Zustand, und wenn 1c versucht, sich daran anzuschließen, wird ein Fehler generiert, der besagt, dass es unmöglich ist, eine Verbindung herzustellen, weil es nicht möglich ist, eine Verbindung zu ihr herzustellen. Die Datenbank wird als verdächtig für die Wiederherstellung markiert. Dieser Modus bedeutet im Grunde, dass MS SQL Server versuchen, die Datenbank mit eigenen Mitteln wiederherzustellen. Ich rührte nichts an und ließ alles für die Nacht liegen, in der Hoffnung, dass die Basis bis zum Morgen wiederhergestellt sein würde, aber am Morgen war es dasselbe, und daher gab es keine Möglichkeit, sich der Basis zu nähern. Es gibt ein Backup nach dem Gesetz der Gemeinheit, aber es ist drei Tage alt, außerdem gibt es viele Dokumente, die nur in der Datenbank aufbewahrt werden, aber es gibt keine nach Papierdokumenten, d.h. Es gibt keine Möglichkeit, Dokumente manuell wiederherzustellen. Nachdem ich viel Kraft und Nerven aufgewendet hatte (die, wie Sie wissen, nicht wiederhergestellt werden :)), kam ich zu der folgenden Abfolge von Aktionen, die zur Wiederherstellung der Basis erforderlich sind.

1) Das Grundprinzip lautet zunächst: Tu keinen Schaden. Wir unterdrücken den SQL-Server und kopieren *.mdf- und *.ldf-Dateien von der Basis auf die Seite.
2) Grundsätzlich kommt es vor, dass der verdächtige Zustand dadurch entsteht, dass sich die Pfade zu den Dateien mit der Basis geändert haben (z.B. hinzugefügt neue Festplatte im System, das dann entfernt wurde, der Ordner mit der Datenbank umbenannt wurde usw.). Dann wurden die Pfade natürlich wiederhergestellt, aber die Datenbank bleibt immer noch als verdächtig markiert. Folgendes tun wir:
3) Starten Sie den SQL-Server.
4) Wir versuchen, die Datenbank über den Enterprise Manager zu verbinden:
Rechtsklick Wählen Sie für Datenbanken im angezeigten Menü Alle Aufgaben -> Datenbank anhängen, wählen Sie dann im angezeigten Dialogfeld die Datei mit der Datenbank (*.mdf) und stellen Sie die erforderlichen Parameter ein.
5) oder über den Query Analyzer mit etwa diesem Befehl:
A. sp_attach_db @dbname = "DemoXMB",
B. @filename1 = "E:\Daten\DemoXMB_Data.MDF",
C. @filename2 = "E:\Daten\DemoXMB_Log.LDF"
6) Die Pfade zur Basis müssen natürlich durch eigene ersetzt werden. Wenn die Basis verbunden ist, können wir sagen, dass wir mit einem leichten Schreck davongekommen sind, aber wenn nicht, dann werden wir weitermachen.
7) Wenn die Logdatei nicht beschädigt ist (*.ldf), aber *.mdf beschädigt ist (z. B. beim Verbinden der Datenbank schwört sql auf Fehler in der mdf-Datei) und der Sicherungsmodus auf vollständig eingestellt ist, dann Wir stellen die Datenbank wieder her, ohne die Protokolltransaktionen wiederherzustellen, fast 100%, dass die ganze Qual dort enden kann.
8) Wenn im Gegenteil die ldf-Datei beschädigt ist, aber die *.mdf-Datei erhalten bleibt, schwört die Datenbank beim Verbinden auf das Fehlen/Beschädigen des Transaktionsprotokolls. In diesem Fall können Sie die HP "sp_attach_single_file_db" verwenden.

Zum Beispiel:
Meister verwenden
EXEC sp_attach_single_file_db@dbname="DemoXMB",
@physname="c:\mssql7\data\DemoXMB_Dat.mdf"

Beim Ausführen dieser Befehle wird die Datei DemoXMB_Log.ldf im selben Verzeichnis wie die Basis erstellt, mit einer Größe von 1 MB und automatischer Erweiterung.
Wenn *.MDF- und *.LDF-Dateien vorhanden sind oder Daten in mehr als einer physischen Datei gespeichert sind (die Gesamtzahl der angehängten physischen Dateien sollte 16 nicht überschreiten), sollte "sp_attach_db" von HP verwendet werden

Zum Beispiel:
Meister verwenden
EXEC sp_attach_db@dbname="DemoXMB",
@filename1 = "c:\mssql7\data\DemoXMB_Dat.mdf",
@filename1 = "c:\mssql7\data\DemoXMB_Log.ldf"

Um mehr als 16 physische Dateien mit der Datenbank zu verbinden, verwenden Sie den Befehl:
ERSTELLEN SIE DATENBANK ZUM ANHÄNGEN

Wenn jedoch nichts geholfen hat, beide Dateien beschädigt wurden und sich die Datenbank immer noch im verdächtigen Zustand befindet, können Sie versuchen, den Zustand der Datenbank mit der folgenden Reihenfolge zurückzusetzen: (Bevor Sie dieses HP verwenden, müssen Sie die direkte Änderung von Systemtabellen zulassen )
Meister verwenden
gehen
Wir erlauben die direkte Änderung von Systemtabellen:
sp_configure "Updates zulassen",1
gehen
mit Override neu konfigurieren
gehen
Um das Suspect-Flag zurückzusetzen, führen Sie sp_resetstatus in der Master-DB aus:
sp_resetstatus "Datenbankname"
gehen
Und jetzt werden wir die direkte Änderung von Systemtabellen verbieten:
sp_configure "Updates zulassen",0
gehen
mit Override neu konfigurieren
gehen

Grundsätzlich, als ich all diese Schritte befolgte, wurde der Verdächtige Status zurückgesetzt, ABER! Beim Versuch, Aktionen auszuführen, begann SQL zu schwören, dass sich die Datenbank immer noch im verdächtigen Zustand befand. Und dann habe ich das gemacht:

Führen Sie das Skript von QA aus:
Meister verwenden
gehen
sp_configure "Updates zulassen", 1
mit Override neu konfigurieren
gehen

Dort machen wir:
update sysdatabases set status= 32768 wobei name = " "

Starten Sie den SQL-Server neu. Grundsätzlich sollte die Basis sichtbar sein (im Notbetrieb).

Von der QA führen wir aus:
VERWENDEN" "
GEHEN
sp_dboption" ", "single_user", "true"
gehen
DBCC CHECKDB(" ", REPAIR_ALLOW_DATA_LOSS)
gehen

Wenn alles ok ist, dann:
sp_dboption" ", "single_user", "false"
gehen
Meister verwenden
gehen
sp_configure "Updates zulassen", 0
gehen

Danach war es möglich, die Datenbanktabellen von SQL aus anzuzeigen, aber es war unmöglich, damit zu arbeiten. Jetzt müssen Sie Data Transformation Services verwenden, um die Daten in eine neue Datenbank zu exportieren. Danach führen wir die Wiederherstellung / Prüfung der Datenbank mit 1C durch. Aufmerksamkeit! Viele beachten diesen sehr wichtigen Punkt nicht. Infolgedessen stellen Sie möglicherweise irgendwann fest, dass die Datenbank, gelinde gesagt, nicht ganz korrekt wiederhergestellt wurde. Diese. im Dokument wird anstelle der Nomenklatur so etwas wie 10122 /<Объект не найден>, das ist das Problem, das sich für mich ergeben hat, es kann viele Optionen geben. Daher ist es besser, Zeit zu verlieren, aber die Datenbank mit 1C zu überprüfen.

Wenn überhaupt nichts hilft und die Leidenschaftsdaten wiederhergestellt werden müssen, gibt es immer noch Drittanbieter-Dienstprogramm namens MSSQLRecovery . Das Dienstprogramm ist kostenpflichtig, aber es ist möglich, die Demoversion zu verwenden, die hier heruntergeladen werden kann: http://www.officerecovery.com/mssql/download_demo.htm . Das Programm ist sehr einfach und die Wiederherstellung der Datenbank besteht aus drei Schritten: 1) Wählen Sie die Datei mit der Datenbank aus; 2) Wählen Sie den Pfad zum Speichern; 3) Drücken Sie die Wiederherstellungstaste; Wir warten. Das Programm parst die SQL-Datenbank Stück für Stück und legt sie in einem eigenen Verzeichnis ab. Dort fügt sie auch eine .bat-Datei hinzu, um die Datenbank aus den erhaltenen "Stücken" wiederherzustellen. Ich habe es nie benutzt, weil. geschafft, die Datenbank durch die vorherigen Schritte wiederherzustellen.

Aber! Hier sollte eine Pause eingelegt werden. Der Artikel wäre nicht vollständig, wenn ich nicht Methoden zur Vermeidung solcher Probleme beschrieben hätte. Also der einfachste und zuverlässigste Weg: archivieren, archivieren und nochmals archivieren. Gehen Sie im Enterprise Manager in das Menü Tools->Wizards->Management->Backup Wizard und konfigurieren Sie alle notwendigen Parameter. Als Ergebnis habe ich vollständig zurückgesetzt SQL-Datenbank auf Platte passiert nachts und dann alle 15 Minuten ein Backup der an der Datenbank vorgenommenen Änderungen. Wenn ich ein solches Backup hätte, würde ich im Prinzip in ein paar Minuten zurückrollen und weiter Coca-Cola trinken :).

Wenn Sie weitere Fragen/Kommentare haben, schreiben Sie hier:

MDF wiederherstellen

Wenn Basis Microsoft-Daten Ist der SQL Server funktionsunfähig und hat die Datenbank im SQL Management Studio den Status „Suspend“ (grau markiert), dann ist die Integrität der darin enthaltenen Daten ernsthaft verletzt. Wie kann man eine beschädigte Datenbank aus dem Suspend-Zustand wiederherstellen? Wie kann ich Informationen wiederherstellen, die in einer .mdf-Datenbankdatei gespeichert sind?

Schritt-für-Schritt-Beschreibung zum Reparieren einer beschädigten .mdf-Datei:

  • Trennen Sie die Datenbank von MS SQL Server in SQL Management Studio
  • Erstellen Sie eine neue leere Datenbank für den späteren Import der wiederhergestellten Daten in diese.
  • Laufen SQL Server-Reparatur-Toolbox und wählen Sie die .mdf-Datei, deaktivierte Basis auf der ersten Seite des Programms

Befolgen Sie alle Schritte im Programm und:

  • oder speichern Sie Daten als SQL-Skripte. Nachdem Sie die Daten als SQL-Skripte auf der Festplatte gespeichert haben, müssen Sie die .bat-Datei mit ausführen die richtigen Parameter um Daten in eine neue Datenbank zu importieren
  • oder Daten direkt in eine neue Datenbank exportieren.
SQL Server-Reparatur-Toolbox ist nicht kostenloses Programm offen Quellcode. Benutzer können dieses Programm vor dem Kauf mit der Demoversion ausprobieren. Das Programm ist nicht unter der GNU General Public License (GPL) oder der GNU Lesser General Public License (LGPL) lizenziert.

System Anforderungen: Windows 98 oder höher

Es ist etwas Schreckliches passiert (eine Schraube ist abgefallen, es gab einen Stromstoß usw.) - die Basis befindet sich im verdächtigen Zustand und will sie nicht verlassen, egal was wir tun ...

Sicherungen Natürlich haben wir keine Basen gemacht - vielleicht bläst es um. Das tat es nicht.

Um Daten wiederherzustellen, benötigen wir also:

1. MSSQL-Server, MS SQL Enterprise Manager (EM), MS SQL Query Analyzer (QA) von Microsoft (in MS SQL enthalten).

2. 1C:Enterprise 7.7 SQL-Version.

3. MSSQLRecovery von http://www.officerecovery.com

4. Eine Kopie der Datei 1cv7.md aus der zerstörten 1C-Datenbank, eine Kopie der zerstörten mdf-Datei, ungefähr gleich Freiraum auf der Festplatte, die die Datei belegt.

5. Freizeit basierend auf der Berechnung von 3 Stunden pro 1 GB MDF-Dateigewicht.

6. Tastatur, Maus, Monitor.

Ich werde kurz beschreiben, was MSSQLRecovery tut:

1. Analysiert die mdf-Datei auf Strukturebene (MFT), bildet Text-SQL-Skripte, die das Datenbankschema und die Daten selbst aus unserer zerstörten Datenbank enthalten.

2. Erstellt Batch-Datei commit.bat, das die Konsolenversion von MS Query Analyzer startet, die SQL-Dateien sequentiell ausführt und tatsächlich unsere neu erstellte SQL-Datenbank füllt.

Kommentare zu MSSQLRecovery.

Das Programm ist für alle gut, es kann in einer aussichtslosen Situation helfen. Aber es gibt zwei ärgerliche Momente, die die Wiederherstellung der 1C-Datenbank stören.

Zuerst erstellt das Programm ein schema.sql-Skript, das eine Beschreibung der Struktur von Tabellen, Prozeduren, Funktionen, Indizes usw. enthält. Dieses Skript wird zuerst ausgeführt, es erstellt also Tabellen, Prozeduren, Funktionen, Indizes usw. in unserer leeren Datenbank weit. Es tut es sehr gut. Zum einen "aber" - die Reihenfolge der Felder in der Datei wird beim Erstellen der Tabellenstruktur verwechselt. Vielleicht ist für andere Programme eine solche „Verwechslung“ nicht beängstigend, aber 1C verdaut dies nicht.

Zweitens verwendet die erstellte Batch-Datei commit.bat die Konsolenversion von Query Analyzer (isql.exe), will aber aus irgendeinem Grund nicht korrekt mit der cp1251-Codepage arbeiten - sie konvertiert russische Zeichen in die OEM-Codierung. Bei uns funktioniert es auch nicht.

Eigentlich sind die Verfahren, die durchgeführt werden müssen, um glücklich zu sein:

1. Setzen Sie MSSQLRecovery auf eine teilweise zerstörte mdf-Datei, geben Sie ihr Zeit zum Verarbeiten und geben Sie dann an, wo wir die resultierenden Skripte mit der Datenbankstruktur und den wiederhergestellten Daten speichern möchten.

2. Erstellen Sie eine neue leere Datenbank auf dem SQL-Server.

3. Erstellen Sie die Strukturen unserer Basis mit einer Kopie von 1cv7.md aus der zusammengeklappten Basis mit 1C: Configurator.

4. Datei bearbeiten commit.bat, wodurch die Zeile mit dem Aufruf zum Ausführen des Skripts entfernt wird schema.sql- Wir haben die Datenbankstruktur bereits mit 1C erstellt.

5. Wechseln Sie in dasselbe commit.bat Forderung isql Bei Anruf isqlw– GUI-Version von Query Analyzer. Dies ist für die korrekte Wahrnehmung der russischen Kodierung notwendig. Diese. Linie:
isql -S %1 -d %2 -U %3 -P %4 -E -I data0001.sql
wird aussehen wie:
isqlw -S %1 -d %2 -U %3 -P %4 -E -i data0001.sql -o out.txt
Der Parameter „-o“ und die Datei „out.txt“ sind für den korrekten Start der GUI-Version von QA erforderlich, das Protokoll der durchgeführten Transaktionen wird in die Datei „out.txt“ geschrieben. Sie müssen die gesamte Datei commit.bat ersetzen, zum Beispiel in Dateimanager weit Manager.

6. Datei ausführen commit.bat zur Ausführung mit vier Parametern: - SQL-Servername - Name neue Basis Das zuvor erstellte SQL - Der Benutzername, der die dbowner-Rolle für diese Datenbank hat (normalerweise sa) - Das Passwort für diesen Benutzer Es sieht ungefähr so ​​aus: commit.bat my_sql_server recovery_1c_db sa gfhjkm

Eigentlich alles. Anstatt Batch-Datei Sie können eine einfache Verarbeitung in 1C schreiben, die gemäß der Auflistung des Verzeichnisses Skripte sequentiell ausführt.

Nach dem Training commit.bat Sie können 1C laufen lassen und sehen, wie groß die Verluste sind. In der Regel gehen die Daten verloren, auf die zum Zeitpunkt des Ausfalls am häufigsten zugegriffen oder die am häufigsten verwendet wurden.

Und damit es keine Verluste gibt - machen Sie ein Backup. Und öfter.

Datenbanken sind das Rückgrat vieler Unternehmen Informationssysteme. Sie können fast alle Informationen speichern, von der Betriebs- bis zur Buchhaltungsdokumentation. Auch eine vorübergehende Nichtverfügbarkeit dieser Informationen kann zu erheblichen Verlusten führen. Was können wir über ihren vollständigen Verlust sagen! Inzwischen ist diese Situation ziemlich real. Physisch gesehen sind Datenbanken die gewöhnlichsten Dateien, die durch einen Virenbefall oder durch Abstürze leicht beschädigt werden können Software oder Dateisystem, Versagen Festplatte, fahrlässiges Handeln von Benutzern usw. In jedem dieser Fälle wird die Datenbank nicht mehr geöffnet und dementsprechend werden alle darin abgelegten Informationen unzugänglich.

Das Programm kann helfen, dieses Problem zu bewältigen und scheinbar vollständig verlorene Daten zurückzugeben. SQL Server-Wiederherstellungs-Toolbox(). Es dient zum Extrahieren und Speichern von Informationen aus beschädigten MS SQL Server-Datenbanken (unterstützt Microsoft-Dateien SQL Server 7.0, 2000, 2005, 2005 64-Bit, 2008 und 2008 R2). Natürlich kann die SQL Server Recovery Toolbox keine vollständige Wiederherstellung aller Daten garantieren. Es muss verstanden werden, dass der Schaden in einigen Fällen so stark sein kann, dass es einfach unmöglich ist, einige der Informationen zu extrahieren. Der Prozess der Wiederherstellung und Speicherung von Informationen aus einer beschädigten MS SQL Server-Datenbank mithilfe des Programms SQL Server-Wiederherstellungs-Toolbox erfolgt über einen Schritt-für-Schritt-Assistenten. In jeder Phase muss der Benutzer nur eine Aktion ausführen, was sehr bequem und praktisch ist.

Der erste Schritt besteht darin, die beschädigte MS SQL Server-Datenbank auszuwählen. Am einfachsten geht das mit Windows Explorer, die gestartet wird, wenn auf die Schaltfläche geklickt wird. Die Erweiterungen *.mdf und *.ndf (Standarderweiterungen von MS SQL Server Datenbanken) werden automatisch als Auswahlfilter vorgegeben. Alle einmal analysierten Dateien werden in eine spezielle Liste eingetragen Schneller Zugang. Um sie auszuwählen, muss der Benutzer künftig nur noch auf das Symbol klicken, den Cursor in der sich öffnenden Liste auf das gewünschte Dokument bewegen und auf klicken linker Knopf Mäuse.

Der Übergang zur nächsten Stufe erfolgt über die Schaltfläche Weiter. In diesem Fall zeigt das Programm ein Dialogfeld an, in dem Sie gefragt werden, ob eine Analyse durchgeführt werden soll oder nicht Quelldatei. Wenn die Antwort ja ist, extrahiert es Dienstdaten aus der beschädigten Datenbank und zeigt die Informationen an, die es wiederherstellen kann. Zur Bequemlichkeit des Benutzers ist das Fenster in zwei Teile geteilt. Die linke zeigt alle möglichen Kategorien von Informationen: Benutzer- und Systemtabellen (User Tables und System Tables), Ansichten (Views), gespeicherte Prozeduren (Stored Procedures), Funktionen (Functions) und benutzerdefinierte Typen (benutzerdefinierte Datentypen). Wenn Sie den Cursor auf eines davon platzieren, wird auf der rechten Seite eine Liste der verfügbaren Objekte und ihrer Inhalte angezeigt. Der Benutzer muss es sorgfältig prüfen und sicherstellen, dass das Programm SQL Server-Wiederherstellungs-Toolbox wird die Aufgabe bewältigen und wirklich in der Lage sein, die verlorenen Daten wiederherzustellen.

Im nächsten Schritt wählen Sie aus, wie die Informationen gespeichert werden sollen. Tatsache ist, dass in dem betreffenden Dienstprogramm Daten gespeichert werden können, die aus einer beschädigten Datei extrahiert wurden Festplatte als eine Reihe von Skripten SQL-Sprache oder direkt in die MS SQL Server-Datenbank exportiert werden. Die erste Option ist gut, da Sie damit die extrahierten Informationen auf einen beliebigen Server übertragen können. Kopieren Sie dazu einfach das als Ergebnis der Arbeit erhaltene Skriptpaket nach gewünschten Rechner und führen Sie es dort aus. Und die zweite Option ist praktischer, wenn der PC, auf dem die Wiederherstellung durchgeführt wird, eine Verbindung zur gewünschten Datenbank hat. In diesem Fall werden Informationen ohne weitere Schritte dorthin exportiert.

Als nächstes muss der Benutzer die Informationen auswählen, die aus der beschädigten Datei wiederhergestellt und gespeichert werden müssen. Für dieses Programm SQL-Recovery-Robox zeigt wieder auf dem Bildschirm an, was es extrahieren kann. Und der Benutzer muss die Daten markieren, die er benötigt, indem er die Kontrollkästchen aktiviert / deaktiviert. Sie können aus der gesamten Datenbank, ganzen Kategorien von Informationen oder auf einmal auswählen oder abwählen einzelne Objekte(Tabellen, Ansichten, gespeicherte Prozeduren usw.).

Nach Abschluss der Auswahl können Sie mit dem Scannen der Quelldatei und dem Speichern der daraus extrahierten Informationen beginnen. Klicken Sie dazu auf die Schaltfläche Wiederherstellung starten. Die Dauer dieser Arbeit hängt von zwei Faktoren ab. Zunächst aus der Quelldatei, ihrer Struktur und Größe. Und zweitens von der Leistungsfähigkeit des Rechners, auf dem es läuft. Es ist erwähnenswert, dass die Datenbanken in einigen Fällen riesig sind und daher die Wiederherstellung von Informationen aus ihnen mehrere Tage dauern kann. Unmittelbar nach Abschluss des Vorgangs SQL-Programm Server Recovery Toolbox zeigt ein Protokoll an. Es liefert Daten zu allen Informationswiederherstellungsprozessen, die während der aktuellen Arbeitssitzung durchgeführt wurden.

Damit ist die SQL Server Recovery Toolbox ein erfolgreiches Tool zur Wiederherstellung von Daten aus beschädigten MS SQL Server Datenbanken. Es zeichnet sich durch zwei Merkmale aus. Der erste ist Effizienz. Das fragliche Dienstprogramm ist in der Lage, so viele Informationen wie möglich aus einer beschädigten Datei wiederherzustellen. Das zweite Merkmal der SQL Server Recovery Toolbox ist ihre extreme Benutzerfreundlichkeit. Mit Hilfe dieses Programms kann jeder Benutzer ohne vorherige Schulung Informationen aus einer beschädigten Datenbank extrahieren und speichern, auch wenn er gerade erst anfängt, sich mit einem Computer vertraut zu machen.



Wird geladen...
Spitze