Wiederherstellen eines Korrupten SQL Server MDF-Datenbank

Wenn Sie SQL Server Die MDF-Datenbank ist beschädigt. Sie können die darin enthaltenen Daten mithilfe der folgenden Methoden wiederherstellen, um den Verlust zu verringern:

Hinweis: Bevor Sie Datenwiederherstellungsvorgänge ausführen, sichern Sie bitte zuerst Ihre beschädigten MDF- und NDF-Datenbankdateien.

  1. Zunächst können Sie es versuchen SQL Server eingebauter Befehl DBCC-CHECKDB um Ihre Datenbank wiederherzustellen. Angenommen, die beschädigte Datenbankdatei lautet "MyDatabase.mdf", können Sie die darin enthaltenen Daten wie folgt wiederherstellen:
    1. Restart SQL Server.
    2. Führen Sie keine Operationen durch.
    3. In SQL Server Führen Sie in Management Studio die folgenden SQL-Anweisungen aus:
      Verwenden Sie die Masterdeklaration @databasename varchar (255) ) dbcc checkdb (@ Datenbankname, REPAIR_REBUILD) exec sp_dboption @ Datenbankname, N'single ', N'false' - Setzt die Zieldatenbank wieder in den Mehrbenutzermodus
      

      Die Aussage

      dbcc checkdb (@ Datenbankname, REPAIR_ALLOW_DATA_LOSS)
      

      Dies kann zum Verlust einiger Daten in Ihrer Datenbank führen, wenn der Reparaturvorgang ausgeführt wird.

      Während der Aussage

      dbcc checkdb (@ Datenbankname, REPAIR_REBUILD)
      

      verursacht während des Reparaturvorgangs KEINEN Datenverlust, ist jedoch zeitaufwändiger.

      Wenn Sie also nicht dringend sind, können Sie zunächst versuchen, nur die zweite dbcc checkdb-Anweisung auszuführen. Wenn diese Anweisung nicht zur Wiederherstellung der Datenbank beitragen kann, können Sie den ersten und zweiten dbcc checkdb-Befehl ausführen.

      Nach dem Reparaturvorgang können Sie anrufen

      dbcc checkdb ('MyDatabase.mdf')
      

      erneut, um festzustellen, ob die Datenbank repariert ist oder nicht.

      Weitere Informationen zum Befehl dbcc checkdb finden Sie unter https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. Wenn dbcc checkdb nach Verwendung von Methode 1 weiterhin Fehler in einigen Tabellen meldet, können Sie es versuchen SQL Server eingebauter Befehl DBCC CHECKTABLE zum Wiederherstellen dieser Tabellen in Ihrer Datenbank. Angenommen, die beschädigte Datenbankdatei lautet "MyDatabase.mdf" und die Tabelle, die Sie reparieren möchten, ist "MyTable". Dann können Sie die folgenden Schritte ausführen, um sie zu reparieren:
    1. Restart SQL Server.
    2. Führen Sie keine Operationen durch.
    3. In SQL Server Führen Sie in Management Studio die folgenden SQL-Anweisungen aus:
      Verwenden Sie MyDatabase.mdf. Deklarieren Sie @dbname varchar (255) set @ dbname = 'MyDatabase.mdf' exec sp_dboption @ dbname, 'Einzelbenutzer', 'true' dbcc checktable ('MyTable', REPAIR_ALLOW_DATA_LOSS) ) exec sp_dboption @ dbname, 'single user', 'false'
      

      Die Aussage

      dbcc checktable ('MyTable', REPAIR_ALLOW_DATA_LOSS)
      

      Dies kann zum Verlust einiger Daten in Ihrer Tabelle führen, wenn der Reparaturvorgang ausgeführt wird.

      Während der Aussage

      dbcc checktable ('MyTable', REPAIR_REBUILD)
      

      verursacht während des Reparaturvorgangs KEINEN Datenverlust, ist jedoch zeitaufwändiger.

      Wenn Sie also nicht dringend sind, können Sie zunächst versuchen, nur die zweite dbcc checktable-Anweisung auszuführen. Wenn diese Anweisung nicht zur Wiederherstellung der Datenbank beitragen kann, können Sie den ersten und zweiten dbcc checktable-Befehl ausführen.

      Nachdem Sie den Reparaturvorgang für alle beschädigten Tabellen abgeschlossen haben, können Sie aufrufen

      dbcc checkdb ('MyDatabase.mdf')
      

      erneut, um festzustellen, ob die Tabellen in der Datenbank fest sind oder nicht.

    Weitere Informationen zum Befehl dbcc checktable finden Sie unter https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. Wenn Methode 1 und 2 die beschädigte Datenbank oder die Tabellen immer noch nicht reparieren können oder wenn diese Methoden die gewünschten Daten nicht wiederherstellen können, können Sie sie verwenden DataNumen SQL Recovery um die Daten aus Ihrer MDF-Datenbank wiederherzustellen.