Gendan en korrupt SQL Server MDF-database

Når du SQL Server MDF-database er beskadiget, du kan bruge følgende metoder til at gendanne dataene i den for at reducere tabet:

Bemærk: Inden du udfører datagendannelsesoperationer, skal du først sikkerhedskopiere dine korrupte MDF- og NDF-databasefiler.

  1. Først og fremmest kan du prøve SQL Server indbygget kommando DBCC CHECKDB for at gendanne din database. Hvis vi antager, at den korrupte databasefil er 'MyDatabase.mdf', kan du gøre følgende for at gendanne dataene inde i den:
    1. Restart SQL Server.
    2. Udfør ikke nogen handlinger.
    3. In SQL Server Management Studio, udfør følgende SQL-sætninger:
      brug master erklær @databasename varchar (255) set @ databasename = 'MyDatabase.mdf' exec sp_dboption @databasename, N'single ', N'true' - Indstil destinationsdatabasen til single-user mode dbcc checkdb (@ databasename, REPAIR_ALLOW_DATA_LOSS ) dbcc checkdb (@ databasename, REPAIR_REBUILD) exec sp_dboption @databasename, N'single ', N'false' - Sæt destinationsdatabasen tilbage til multi-user mode
      

      Udsagnet

      dbcc checkdb (@ databasenavn, REPAIR_ALLOW_DATA_LOSS)
      

      kan medføre tab af nogle data i din database, når du udfører reparationen.

      Mens udsagnet

      dbcc checkdb (@ databasenavn, REPAIR_REBUILD)
      

      vil IKKE medføre datatab under reparationsoperationen, men det er mere tidskrævende.

      Så hvis du ikke haster, kan du først prøve at udføre den anden dbcc checkdb-sætning, hvis denne erklæring ikke kan hjælpe med at gendanne databasen, kan du udføre den første og anden dbcc checkdb-kommando.

      Efter reparationsoperationen kan du ringe

      dbcc checkdb ('MyDatabase.mdf')
      

      igen for at se om databasen er løst eller ej.

      Mere detaljerede oplysninger om dbcc checkdb kommando kan findes på https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. Hvis dbcc checkdb efter brug af metode 1 stadig rapporterer fejl i nogle tabeller, kan du prøve SQL Server indbygget kommando DBCC CHECKTABLE for at gendanne disse tabeller i din database. Hvis vi antager, at den korrupte databasefil er 'MyDatabase.mdf', og den tabel, du vil reparere, er 'MyTable', kan du gøre følgende for at reparere den:
    1. Restart SQL Server.
    2. Udfør ikke nogen handlinger.
    3. In SQL Server Management Studio, udfør følgende SQL-sætninger:
      brug MyDatabase.mdf erklær @dbname varchar (255) set @ dbname = 'MyDatabase.mdf' exec sp_dboption @ dbname, 'single user', 'true' dbcc checktable ('MyTable', REPAIR_ALLOW_DATA_LOSS) dbcc checktable ('MyTableB, REPA ) exec sp_dboption @ dbname, 'single user', 'false'
      

      Udsagnet

      dbcc checktable ('MyTable', REPAIR_ALLOW_DATA_LOSS)
      

      kan medføre tab af nogle data i din tabel, når du udfører reparationen.

      Mens udsagnet

      dbcc checktable ('MyTable', REPAIR_REBUILD)
      

      vil IKKE medføre datatab under reparationsoperationen, men det er mere tidskrævende.

      Så hvis du ikke er presserende, kan du først prøve at udføre den anden dbcc-bindbar erklæring, hvis denne erklæring ikke kan hjælpe med at gendanne databasen, så kan du udføre den første og anden dbcc checktable-kommando.

      Når du har gennemført reparationsoperationen for alle de korrupte tabeller, kan du ringe

      dbcc checkdb ('MyDatabase.mdf')
      

      igen for at se om tabellerne i databasen er faste eller ej.

    Mere detaljeret information om dbcc checktable-kommando kan findes 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 stadig ikke kan rette den korrupte database eller tabellerne, eller hvis disse metoder ikke kan gendanne de ønskede data, kan du bruge DataNumen SQL Recovery for at gendanne data fra din MDF-database.