Oporavak oštećenog SQL Server MDF baza podataka

Kada 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 MDF i NDF datoteka baze podataka.

  1. Prije svega, možete pokušati SQL Server ugrađena naredba DBCC CHECKDB za oporavak vaše baze podataka. Pod pretpostavkom da je oštećena datoteka baze podataka 'MyDatabase.mdf', tada možete učiniti sljedeće za oporavak podataka u njoj:
    1. Restart SQL Server.
    2. Nemojte izvoditi nikakve operacije.
    3. In SQL Server Management Studio, izvršite sljedeće SQL naredbe:
      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,REPAIR_ALLOW_DATA_LOSS ) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false' -- Vratite odredišnu bazu podataka na višekorisnički način
      

      Izjava

      dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
      

      može uzrokovati gubitak nekih podataka u vašoj bazi podataka prilikom izvođenja operacije popravka.

      Dok je izjava

      dbcc checkdb(@databasename,REPAIR_REBUILD)
      

      NEĆE uzrokovati gubitak podataka tijekom operacije popravka, 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 u oporavku baze podataka, tada možete izvesti prvu i drugu dbcc checkdb naredbu.

      Nakon operacije popravka, možete nazvati

      dbcc checkdb('MyDatabase.mdf')
      

      ponovo da vidim je li baza podataka popravljena ili nije.

      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 javlja pogreške u nekim tablicama, možete pokušati SQL Server ugrađenu naredbu DBCC CHECKTABLE za oporavak ovih tablica u vašoj bazi podataka. Pod pretpostavkom da je oštećena datoteka baze podataka 'MyDatabase.mdf', a tablica koju želite popraviti je 'MyTable', možete je popraviti na sljedeći način:
    1. Restart SQL Server.
    2. Nemojte izvoditi nikakve operacije.
    3. In SQL Server Management Studio, izvršite sljedeće SQL naredbe:
      koristi MyDatabase.mdf deklariraj @dbname varchar(255) postavi @dbname='MyDatabase.mdf' exec sp_dboption @dbname,'single user','true' dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS) dbcc checktable('MyTable',REPAIR_REBUILD ) exec sp_dboption @dbname,'single user','false'
      

      Izjava

      dbcc provjerna tablica ('Moja tablica', REPAIR_ALLOW_DATA_LOSS)
      

      može uzrokovati gubitak nekih podataka u vašoj tablici prilikom izvođenja operacije popravka.

      Dok je izjava

      dbcc provjerna tablica ('Moja tablica', REPAIR_REBUILD)
      

      NEĆE uzrokovati gubitak podataka tijekom operacije popravka, ali oduzima više vremena.

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

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

      dbcc checkdb('MyDatabase.mdf')
      

      ponovo da vidim jesu li tablice u bazi podataka fiksne 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 još uvijek ne mogu popraviti oštećenu bazu podataka ili tablice, ili ako te metode ne mogu oporaviti podatke koje želite, tada možete koristiti DataNumen SQL Recovery za oporavak podataka iz vaše MDF baze podataka.