Pulihkan yang rosak SQL Server Pangkalan Data MDF

Apabila anda SQL Server Pangkalan data MDF rosak, anda boleh menggunakan kaedah berikut untuk memulihkan data di dalamnya, untuk mengurangkan kerugian:

Catatan: Sebelum melakukan operasi pemulihan data, sila buat sandaran fail pangkalan data MDF & NDF yang rosak terlebih dahulu.

  1. Pertama sekali, anda boleh mencuba SQL Server arahan terbina dalam DBCC CHECKDB untuk memulihkan pangkalan data anda. Dengan mengandaikan fail pangkalan data yang rosak adalah 'MyDatabase.mdf', maka anda boleh melakukan seperti berikut untuk memulihkan data di dalamnya:
    1. Restart SQL Server.
    2. Jangan melakukan operasi.
    3. In SQL Server Studio Pengurusan, laksanakan penyataan SQL berikut:
      gunakan master menyatakan @databasename varchar (255) set @ databasename = 'MyDatabase.mdf' exec sp_dboption @databasename, N'single ', N'true' - Tetapkan pangkalan data destinasi ke mod pengguna tunggal dbcc checkdb (@ databaseasename, REPAIR_ALLOW_DATA_LOSS ) dbcc checkdb (@ databaseasename, REPAIR_REBUILD) exec sp_dboption @databasename, N'single ', N'false' - Tetapkan pangkalan data destinasi kembali ke mod berbilang pengguna
      

      Penyataan

      dbcc checkdb (@ nama data, REPAIR_ALLOW_DATA_LOSS)
      

      boleh menyebabkan kehilangan beberapa data dalam pangkalan data anda semasa melakukan operasi pembaikan.

      Sementara penyataan

      dbcc checkdb (@ nama data, REPAIR_REBUILD)
      

      TIDAK akan menyebabkan kehilangan data semasa operasi pembaikan, tetapi lebih memakan masa.

      Oleh itu, jika anda tidak mendesak, pertama-tama anda boleh melakukan penyataan dbcc checkdb kedua sahaja, jika pernyataan itu tidak dapat membantu memulihkan pangkalan data, maka anda dapat menjalankan perintah checkdb dbcc pertama dan kedua.

      Selepas operasi pembaikan, anda boleh menghubungi

      dbcc checkdb ('MyDatabase.mdf')
      

      sekali lagi untuk melihat sama ada pangkalan data itu diperbaiki atau tidak.

      Maklumat lebih terperinci mengenai perintah dbcc checkdb boleh didapati di https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. Sekiranya setelah menggunakan kaedah 1, dbcc checkdb masih melaporkan kesalahan pada beberapa jadual, anda boleh mencuba SQL Server perintah terbina dalam DBCC CHECKTABLE untuk memulihkan jadual ini dalam pangkalan data anda. Dengan mengandaikan fail pangkalan data yang rosak adalah 'MyDatabase.mdf' dan jadual yang ingin anda perbaiki adalah 'MyTable', maka anda boleh melakukan seperti berikut untuk memperbaikinya:
    1. Restart SQL Server.
    2. Jangan melakukan operasi.
    3. In SQL Server Studio Pengurusan, laksanakan penyataan SQL berikut:
      gunakan MyDatabase.mdf menyatakan @dbname varchar (255) set @ dbname = 'MyDatabase.mdf' exec sp_dboption @ dbname, 'single user', 'true' dbcc checktable ('MyTable', REPAIR_ALLOW_DATA_LOSS) dbcc checktable ('MyTable' ) exec sp_dboption @ dbname, 'single user', 'false'
      

      Penyataan

      Jadual semak dbcc ('MyTable', REPAIR_ALLOW_DATA_LOSS)
      

      boleh menyebabkan kehilangan beberapa data dalam jadual anda semasa melakukan operasi pembaikan.

      Sementara penyataan

      Jadual semak dbcc ('MyTable', REPAIR_REBUILD)
      

      TIDAK akan menyebabkan kehilangan data semasa operasi pembaikan, tetapi lebih memakan masa.

      Oleh itu, jika anda tidak mendesak, pertama anda boleh melakukan penyataan meja semak dbcc kedua sahaja, jika penyataan tersebut tidak dapat membantu memulihkan pangkalan data, maka anda boleh menjalankan perintah meja semak dbcc pertama dan kedua.

      Setelah anda menyelesaikan operasi pembaikan untuk semua jadual yang rosak, anda boleh menghubungi

      dbcc checkdb ('MyDatabase.mdf')
      

      sekali lagi untuk melihat sama ada jadual dalam pangkalan data tetap atau tidak.

    Maklumat lebih terperinci mengenai arahan dbcc checktable boleh didapati di https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. Sekiranya kaedah 1 dan 2 masih tidak dapat memperbaiki pangkalan data atau jadual yang rosak, atau jika kaedah ini tidak dapat memulihkan data yang anda mahukan, maka anda boleh menggunakan DataNumen SQL Recovery untuk memulihkan data dari pangkalan data MDF anda.