Obnovite pokvarjenega SQL Server Baza podatkov MDF

Ko SQL Server Zbirka podatkov MDF je poškodovana, za zmanjšanje izgube lahko z naslednjimi metodami obnovite podatke v njej:

Opomba: Pred izvajanjem kakršnih koli operacij obnovitve podatkov najprej varnostno kopirajte poškodovane datoteke zbirke podatkov MDF in NDF.

  1. Najprej lahko poskusite SQL Server vgrajen ukaz DBCC CHECKDB obnoviti bazo podatkov. Če predpostavimo, da je datoteka z bazo podatkov MyDatabase.mdf pokvarjena, lahko za obnovitev podatkov v njej storite naslednje:
    1. Restart SQL Server.
    2. Ne izvajajte nobenih operacij.
    3. In SQL Server Management Studio, izvedite naslednje stavke SQL:
      uporaba glavne izjave @databasename varchar (255) set @ databasename = 'MyDatabase.mdf' exec sp_dboption @databasename, N'single ', N'true' - ciljno bazo podatkov nastavite na en uporabniški način dbcc checkdb (@ ime baze podatkov, REPAIR_ALLOW_DATA_LOSS ) dbcc checkdb (@ime baze podatkov, REPAIR_REBUILD) exec sp_dboption @databasename, N'single ', N'false' - Ciljno bazo podatkov nastavite nazaj v več uporabniški način
      

      Izjava

      dbcc checkdb (@ime baze podatkov, REPAIR_ALLOW_DATA_LOSS)
      

      lahko med izvajanjem postopka popravila povzroči izgubo nekaterih podatkov v bazi podatkov.

      Medtem ko izjava

      dbcc checkdb (@ime baze podatkov, REPAIR_REBUILD)
      

      med popravilom NE bo povzročil izgube podatkov, vendar je bolj zamuden.

      Če torej niste nujni, lahko najprej poskusite izvesti samo drugi stavek dbcc checkdb, če ta stavek ne more pomagati pri obnovitvi baze podatkov, lahko izvedete prvi in ​​drugi ukaz dbcc checkdb.

      Po popravilu lahko pokličete

      dbcc checkdb ('MyDatabase.mdf')
      

      še enkrat, da vidim, ali je baza podatkov popravljena ali ne.

      Podrobnejše informacije o ukazu dbcc checkdb najdete na https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. Če po uporabi metode 1 dbcc checkdb še vedno poroča o napakah v nekaterih tabelah, lahko poskusite SQL Server vgrajen ukaz DBCC CHECKTABLE za obnovitev teh tabel v vaši bazi podatkov. Če predpostavimo, da je poškodovana datoteka baze podatkov "MyDatabase.mdf", tabela, ki jo želite popraviti, pa je "MyTable", lahko to storite na naslednji način:
    1. Restart SQL Server.
    2. Ne izvajajte nobenih operacij.
    3. In SQL Server Management Studio, izvedite naslednje stavke SQL:
      uporabite MyDatabase.mdf prijavite @dbname varchar (255) set @ dbname = 'MyDatabase.mdf' exec sp_dboption @ dbname, 'single user', 'true' dbcc checktable ('MyTable', REPAIR_ALLOW_DATA_LOSS) dbcc checktable ('MyTable', REPAD_REB ) exec sp_dboption @ dbname, 'en uporabnik', 'false'
      

      Izjava

      dbcc checktable ('MyTable', REPAIR_ALLOW_DATA_LOSS)
      

      lahko med popravilom povzroči izgubo nekaterih podatkov v tabeli.

      Medtem ko izjava

      dbcc checktable ('MyTable', REPAIR_REBUILD)
      

      med popravilom NE bo povzročil izgube podatkov, vendar je bolj zamuden.

      Torej, če niste nujni, lahko najprej poskusite izvesti samo drugi stavek preverjalne tabele dbcc, če ta izjava ne more pomagati pri obnovitvi baze podatkov, lahko izvedete prvi in ​​drugi ukaz preverljive tabele dbcc.

      Ko dokončate popravilo vseh poškodovanih tabel, lahko pokličete

      dbcc checkdb ('MyDatabase.mdf')
      

      še enkrat, da preverimo, ali so tabele v zbirki podatkov popravljene ali ne.

    Podrobnejše informacije o ukazu dbcc checktable najdete na https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. Če metode 1 in 2 še vedno ne moreta odpraviti poškodovane baze podatkov ali tabel ali če ti metodi ne moreta obnoviti želenih podatkov, lahko uporabite DataNumen SQL Recovery za obnovitev podatkov iz zbirke podatkov MDF.