Oporavi oštećenog SQL Server MDF baza podataka

Kada ti SQL Server MDF baza podataka je oštećena, možete koristiti sljedeće metode za oporavak podataka u njoj, kako biste smanjili gubitak:

Napomena: Prije izvođenja bilo kakvih operacija oporavka podataka, prvo napravite sigurnosnu kopiju oštećenih datoteka baze podataka MDF i NDF.

  1. Prije svega, možete pokušati SQL Server ugrađena komanda DBCC CHECKDB za oporavak vaše baze podataka. Pod pretpostavkom da je oštećena datoteka baze podataka 'MyDatabase.mdf', možete učiniti sljedeće da biste oporavili podatke unutar nje:
    1. Restart SQL Server.
    2. Nemojte izvoditi nikakve operacije.
    3. In SQL Server Management Studio, izvršite sljedeće SQL izraze:
      use master declare @databasename varchar(255) set @databasename='MyDatabase.mdf' exec sp_dboption @databasename, N'single', N'true' -- Postavite odredišnu bazu podataka na jednokorisnički način dbcc checkdb(@databasename,DATA_LOSS) ) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false' -- Vratite odredišnu bazu podataka u višekorisnički način rada
      

      Izjava

      dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
      

      može uzrokovati gubitak nekih podataka u vašoj bazi podataka kada izvršite operaciju popravke.

      Dok je izjava

      dbcc checkdb(@databasename,REPAIR_REBUILD)
      

      NEĆE uzrokovati gubitak podataka tokom operacije popravke, ali oduzima više vremena.

      Dakle, ako niste na hitnom, možete prvo pokušati izvesti samo drugu dbcc checkdb naredbu, ako ta izjava ne može pomoći da se oporavi baza podataka, onda možete izvesti prvu i drugu dbcc checkdb naredbu.

      Nakon operacije popravke, možete pozvati

      dbcc checkdb('MyDatabase.mdf')
      

      ponovo da vidimo da li je baza podataka popravljena ili ne.

      Detaljnije informacije o naredbi dbcc checkdb možete pronaći na https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. Ako nakon korištenja metode 1, dbcc checkdb i dalje prijavljuje greške u nekim tabelama, možete pokušati SQL Server ugrađena naredba DBCC CHECKTABLE za oporavak ovih tablica u vašoj bazi podataka. Pod pretpostavkom da je oštećena datoteka baze podataka 'MyDatabase.mdf' i tabela koju želite popraviti je 'MyTable', tada možete učiniti sljedeće da je popravite:
    1. Restart SQL Server.
    2. Nemojte izvoditi nikakve operacije.
    3. In SQL Server Management Studio, izvršite sljedeće SQL izraze:
      use MyDatabase.mdf declare @dbname varchar(255) set @dbname='MyDatabase.mdf' exec sp_dboption @dbname,'single user','true' dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS',REPAIR_ALLOW_DATA_LOSS','MyDatabase.mdf' exec sp_dboption @dbname,'single user','true' dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS',REPAIR_ALLOW_DATA_LOSS','dbmcDAPAIR checkable ) exec sp_dboption @dbname,'single user','false'
      

      Izjava

      dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS)
      

      može uzrokovati gubitak nekih podataka u vašoj tablici kada izvršite operaciju popravke.

      Dok je izjava

      dbcc checktable('MyTable',REPAIR_REBUILD)
      

      NEĆE uzrokovati gubitak podataka tokom operacije popravke, ali oduzima više vremena.

      Dakle, ako niste na hitnom, možete prvo pokušati izvesti samo drugu dbcc naredbu checktable, ako ta izjava ne može pomoći u oporavku baze podataka, onda možete izvesti prvu i drugu naredbu dbcc tablice za provjeru.

      Nakon što završite operaciju popravke za sve oštećene tablice, možete pozvati

      dbcc checkdb('MyDatabase.mdf')
      

      ponovo da vidimo da li su tabele u bazi podataka ispravljene ili ne.

    Detaljnije informacije o naredbi dbcc checktable možete pronaći na https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. Ako metode 1 i 2 i dalje ne mogu popraviti oštećenu bazu podataka ili tablice, ili ako ove metode ne mogu oporaviti podatke koje želite, onda možete koristiti DataNumen SQL Recovery za oporavak podataka iz vaše MDF baze podataka.