กู้คืนความเสียหาย SQL Server ฐานข้อมูล MDF

เมื่อคุณ SQL Server ฐานข้อมูล MDF เสียหายคุณสามารถใช้วิธีการต่อไปนี้เพื่อกู้คืนข้อมูลในนั้นเพื่อลดการสูญเสีย:

หมายเหตุ: ก่อนดำเนินการกู้ข้อมูลใด ๆ โปรดสำรองไฟล์ฐานข้อมูล MDF & NDF ที่เสียหายก่อน

  1. ก่อนอื่นคุณสามารถลอง SQL Server คำสั่งในตัว DBCC CHECKDB เพื่อกู้คืนฐานข้อมูลของคุณ สมมติว่าไฟล์ฐานข้อมูลเสียหายคือ 'MyDatabase.mdf' คุณสามารถดำเนินการดังนี้เพื่อกู้คืนข้อมูลภายในไฟล์:
    1. restart SQL Server.
    2. ห้ามดำเนินการใด ๆ
    3. In SQL Server Management Studio เรียกใช้คำสั่ง SQL ต่อไปนี้:
      ใช้ master ประกาศ @databasename varchar (255) set @ databasename = 'MyDatabase.mdf' exec sp_dboption @databasename, N'single ', N'true' - ตั้งค่าฐานข้อมูลปลายทางเป็นโหมดผู้ใช้คนเดียว dbcc checkdb (@ databasename, REPAIR_ALLOW_DATA_LOSS ) dbcc checkdb (@ databasename, REPAIR_REBUILD) exec sp_dboption @databasename, N'single ', N'false' - ตั้งค่าฐานข้อมูลปลายทางกลับสู่โหมดผู้ใช้หลายคน
      

      คำสั่ง

      dbcc checkdb (@ databasename, REPAIR_ALLOW_DATA_LOSS)
      

      อาจทำให้ข้อมูลบางส่วนในฐานข้อมูลของคุณสูญหายเมื่อดำเนินการซ่อมแซม

      ในขณะที่คำสั่ง

      dbcc checkdb (@ databasename, REPAIR_REBUILD)
      

      จะไม่ทำให้ข้อมูลสูญหายระหว่างการดำเนินการซ่อมแซม แต่จะใช้เวลานานกว่า

      ดังนั้นหากคุณไม่ได้เร่งด่วนก่อนอื่นคุณสามารถลองใช้คำสั่ง dbcc checkdb ที่สองเท่านั้นหากคำสั่งนั้นไม่สามารถช่วยในการกู้คืนฐานข้อมูลคุณสามารถดำเนินการคำสั่ง dbcc checkdb แรกและที่สองได้

      หลังจากดำเนินการซ่อมแซมคุณสามารถโทร

      dbcc checkdb ('MyDatabase.mdf')
      

      อีกครั้งเพื่อดูว่าฐานข้อมูลได้รับการแก้ไขหรือไม่

      สามารถดูข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับคำสั่ง dbcc checkdb ได้ที่ https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. หากหลังจากใช้วิธีที่ 1 แล้ว dbcc checkdb ยังคงรายงานข้อผิดพลาดในบางตารางคุณสามารถลองได้ SQL Server คำสั่งในตัว DBCC CHECKTABLE เพื่อกู้คืนตารางเหล่านี้ในฐานข้อมูลของคุณ สมมติว่าไฟล์ฐานข้อมูลเสียหายคือ 'MyDatabase.mdf' และตารางที่คุณต้องการซ่อมแซมคือ 'MyTable' จากนั้นคุณสามารถดำเนินการดังนี้เพื่อซ่อมแซม:
    1. restart SQL Server.
    2. ห้ามดำเนินการใด ๆ
    3. In SQL Server Management Studio เรียกใช้คำสั่ง SQL ต่อไปนี้:
      ใช้ MyDatabase.mdf ประกาศ @dbname varchar (255) set @ dbname = 'MyDatabase.mdf' exec sp_dboption @ dbname, 'single user', 'true' dbcc checktable ('MyTable', REPAIR_ALLOW_DATA_LOSS) dbcc checktable ('MyTable', REPAIR_REBUIL ) exec sp_dboption @ dbname, 'ผู้ใช้คนเดียว', 'false'
      

      คำสั่ง

      ตารางตรวจสอบ dbcc ('MyTable', REPAIR_ALLOW_DATA_LOSS)
      

      อาจทำให้ข้อมูลบางส่วนในตารางของคุณสูญหายเมื่อดำเนินการซ่อมแซม

      ในขณะที่คำสั่ง

      ตารางตรวจสอบ dbcc ('MyTable', REPAIR_REBUILD)
      

      จะไม่ทำให้ข้อมูลสูญหายระหว่างการดำเนินการซ่อมแซม แต่จะใช้เวลานานกว่า

      ดังนั้นหากคุณไม่ได้เร่งด่วนก่อนอื่นคุณสามารถลองใช้คำสั่ง dbcc checktable ที่สองเท่านั้นหากคำสั่งนั้นไม่สามารถช่วยในการกู้คืนฐานข้อมูลคุณสามารถดำเนินการคำสั่ง dbcc แรกและที่สอง

      หลังจากที่คุณดำเนินการซ่อมแซมตารางที่เสียหายทั้งหมดแล้วคุณสามารถโทร

      dbcc checkdb ('MyDatabase.mdf')
      

      อีกครั้งเพื่อดูว่าตารางในฐานข้อมูลได้รับการแก้ไขหรือไม่

    สามารถดูข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับคำสั่ง dbcc checktable ได้ที่ https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. หากวิธีที่ 1 และ 2 ยังไม่สามารถแก้ไขฐานข้อมูลที่เสียหายหรือตารางได้หรือหากวิธีการเหล่านี้ไม่สามารถกู้คืนข้อมูลที่คุณต้องการได้คุณสามารถใช้ DataNumen SQL Recovery เพื่อกู้คืนข้อมูลจากฐานข้อมูล MDF ของคุณ