Herstel een beschadigd SQL Server MDF-database

Wanneer je SQL Server MDF-database is beschadigd, u kunt de volgende methoden gebruiken om de gegevens erin te herstellen, om het verlies te verminderen:

Opmerking: Voordat u gegevensherstel uitvoert, moet u eerst een back-up maken van uw corrupte MDF- en NDF-databasebestanden.

  1. Allereerst kunt u het proberen SQL Server ingebouwde opdracht DBCC CONTROLEERDB om uw database te herstellen. Ervan uitgaande dat het corrupte databasebestand 'MyDatabase.mdf' is, kunt u het volgende doen om de gegevens erin te herstellen:
    1. Restart SQL Server.
    2. Voer geen handelingen uit.
    3. In SQL Server Management Studio, voer de volgende SQL-instructies uit:
      use master declare @databasename varchar (255) set @ databasename = 'MyDatabase.mdf' exec sp_dboption @databasename, N'single ', N'true' - Stel de doeldatabase in op single-user modus dbcc checkdb (@ databasename, REPAIR_ALLOW_DATA_LOSS ) dbcc checkdb (@ databasename, REPAIR_REBUILD) exec sp_dboption @databasename, N'single ', N'false' - Zet de doeldatabase terug in de multi-user modus
      

      De verklaring

      dbcc checkdb (@ databasenaam, REPAIR_ALLOW_DATA_LOSS)
      

      kunnen sommige gegevens in uw database verloren gaan tijdens het uitvoeren van de reparatie.

      Terwijl de verklaring

      dbcc checkdb (@ databasenaam, REPAIR_REBUILD)
      

      veroorzaakt GEEN gegevensverlies tijdens de reparatie, maar het kost meer tijd.

      Dus als u geen spoed heeft, kunt u eerst proberen om alleen de tweede dbcc checkdb-instructie uit te voeren. Als die instructie niet kan helpen om de database te herstellen, kunt u de eerste en tweede dbcc checkdb-opdrachten uitvoeren.

      Na de reparatie kunt u bellen

      dbcc checkdb ('MyDatabase.mdf')
      

      nogmaals om te zien of de database is hersteld of niet.

      Meer gedetailleerde informatie over het dbcc checkdb-commando is te vinden op https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. Als dbcc checkdb na het gebruik van methode 1 nog steeds fouten meldt in sommige tabellen, kunt u het proberen SQL Server ingebouwde opdracht DBCC CHECKTABLE om deze tabellen in uw database te herstellen. Ervan uitgaande dat het corrupte databasebestand 'MyDatabase.mdf' is en de tabel die u wilt repareren 'MyTable', dan kunt u het als volgt doen om het te repareren:
    1. Restart SQL Server.
    2. Voer geen handelingen uit.
    3. In SQL Server Management Studio, voer de volgende SQL-instructies uit:
      gebruik MyDatabase.mdf declareren @dbname varchar (255) set @ dbname = 'MyDatabase.mdf' exec sp_dboption @ dbname, 'enkele gebruiker', 'true' dbcc checktable ('MyTable', REPAIR_ALLOW_DATA_LOSS) dbcc checktable ('MyDatabase', REPAILDTable ) exec sp_dboption @ dbname, 'enkele gebruiker', 'false'
      

      De verklaring

      dbcc checktable ('MyTable', REPAIR_ALLOW_DATA_LOSS)
      

      kunnen sommige gegevens in uw tabel verloren gaan tijdens het uitvoeren van de reparatie.

      Terwijl de verklaring

      dbcc checktable ('MyTable', REPAIR_REBUILD)
      

      veroorzaakt GEEN gegevensverlies tijdens de reparatie, maar het kost meer tijd.

      Dus als u geen spoed heeft, kunt u eerst proberen om alleen de tweede dbcc checktable-instructie uit te voeren. Als die instructie niet kan helpen om de database te herstellen, kunt u de eerste en tweede dbcc checktable-opdrachten uitvoeren.

      Nadat u de reparatie voor alle beschadigde tabellen hebt voltooid, kunt u bellen

      dbcc checkdb ('MyDatabase.mdf')
      

      nogmaals om te zien of de tabellen in de database zijn opgelost of niet.

    Meer gedetailleerde informatie over het dbcc checktable commando is te vinden op https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. Als methode 1 en 2 de corrupte database of de tabellen nog steeds niet kunnen herstellen, of als deze methoden de gewenste gegevens niet kunnen herstellen, kunt u deze gebruiken DataNumen SQL Recovery om de gegevens uit uw MDF-database te herstellen.