Gjenopprett en korrupt SQL Server MDF-database

Når du SQL Server MDF-databasen er korrupt, du kan bruke følgende metoder for å gjenopprette dataene i den, for å redusere tapet:

Merk: Før du utfører datagjenopprettingsoperasjoner, må du først sikkerhetskopiere korrupte MDF- og NDF-databasefiler.

  1. Først av alt kan du prøve SQL Server innebygd kommando DBCC CHECKDB for å gjenopprette databasen. Forutsatt at den korrupte databasefilen er 'MyDatabase.mdf', kan du gjøre som følger for å gjenopprette dataene i den:
    1. Restart SQL Server.
    2. Ikke utfør noen operasjoner.
    3. In SQL Server Management Studio, utfør følgende SQL-setninger:
      use master declare @databasename varchar(255) set @databasename='MyDatabase.mdf' exec sp_dboption @databasename, N'single', N'true' -- Sett måldatabasen til enkeltbrukermodus dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS ) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false' -- Sett måldatabasen tilbake til flerbrukermodus
      

      Uttalelsen

      dbcc checkdb(@databasenavn,REPAIR_ALLOW_DATA_LOSS)
      

      kan føre til tap av noen data i databasen når du utfører reparasjonsoperasjonen.

      Mens uttalelsen

      dbcc checkdb(@databasenavn,REPAIR_REBUILD)
      

      vil IKKE forårsake tap av data under reparasjonsoperasjonen, men det er mer tidkrevende.

      Så hvis du ikke haster, kan du først prøve å utføre den andre dbcc checkdb-setningen bare, hvis den setningen ikke kan hjelpe til med å gjenopprette databasen, kan du utføre den første og andre dbcc checkdb-kommandoen.

      Etter reparasjonsoperasjonen kan du ringe

      dbcc checkdb('MyDatabase.mdf')
      

      igjen for å se om databasen er fikset eller ikke.

      Mer detaljert informasjon om dbcc checkdb-kommandoen finnes på https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. Hvis etter bruk av metode 1, dbcc checkdb fortsatt rapporterer feil i noen tabeller, kan du prøve SQL Server innebygd kommando DBCC CHECKTABLE for å gjenopprette disse tabellene i databasen. Forutsatt at den korrupte databasefilen er 'MyDatabase.mdf' og tabellen du vil reparere er 'MyTable', så kan du gjøre som følger for å reparere den:
    1. Restart SQL Server.
    2. Ikke utfør noen operasjoner.
    3. In SQL Server Management Studio, utfør følgende SQL-setninger:
      bruk MyDatabase.mdf declare @dbname varchar(255) set @dbname='MyDatabase.mdf' exec sp_dboption @dbname,'single user','true' dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS) dbcc-checktable',(DPAIR_DATA_LOSS) ) exec sp_dboption @dbname,'single user','false'
      

      Uttalelsen

      dbcc checktable('MinTable',REPAIR_ALLOW_DATA_LOSS)
      

      kan føre til tap av noen data i tabellen når du utfører reparasjonsoperasjonen.

      Mens uttalelsen

      dbcc checktable('MyTable',REPAIR_REBUILD)
      

      vil IKKE forårsake tap av data under reparasjonsoperasjonen, men det er mer tidkrevende.

      Så hvis du ikke haster, kan du først prøve å utføre den andre dbcc checktable-setningen bare, hvis den setningen ikke kan hjelpe til med å gjenopprette databasen, kan du utføre den første og andre dbcc checktable-kommandoen.

      Etter at du har fullført reparasjonsoperasjonen for alle de korrupte tabellene, kan du ringe

      dbcc checkdb('MyDatabase.mdf')
      

      igjen for å se om tabellene i databasen er fikset eller ikke.

    Mer detaljert informasjon om kommandoen dbcc checktable finner du på https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. Hvis metode 1 og 2 fortsatt ikke kan fikse den korrupte databasen eller tabellene, eller hvis disse metodene ikke kan gjenopprette dataene du ønsker, kan du bruke DataNumen SQL Recovery for å gjenopprette dataene fra MDF-databasen.