ກູ້ຄືນຄວາມເສຍຫາຍ SQL Server ຖານຂໍ້ມູນ MDF

ເມື່ອ​ເຈົ້າ SQL Server ຖານຂໍ້ມູນ MDF ເສຍຫາຍ, ທ່ານສາມາດນໍາໃຊ້ວິທີການດັ່ງຕໍ່ໄປນີ້ເພື່ອຟື້ນຕົວຂໍ້ມູນໃນມັນ, ເພື່ອຫຼຸດຜ່ອນການສູນເສຍ:

ຫມາຍ​ເຫດ​: ກ່ອນ​ທີ່​ຈະ​ປະ​ຕິ​ບັດ​ການ​ຟື້ນ​ຕົວ​ຂໍ້​ມູນ​ໃດໆ​, ກະ​ລຸ​ນາ​ສໍາ​ຮອງ​ຂໍ້​ມູນ​ໄຟລ​໌ MDF & NDF ທີ່​ເສຍ​ຫາຍ​ຂອງ​ທ່ານ​ກ່ອນ​.

  1. ຫນ້າທໍາອິດຂອງການທັງຫມົດ, ທ່ານສາມາດພະຍາຍາມ SQL Server ຄໍາສັ່ງໃນຕົວ DBCC ກວດສອບ ເພື່ອຟື້ນຕົວຖານຂໍ້ມູນຂອງທ່ານ. ສົມມຸດວ່າໄຟລ໌ຖານຂໍ້ມູນທີ່ເສຍຫາຍແມ່ນ 'MyDatabase.mdf', ຫຼັງຈາກນັ້ນທ່ານສາມາດເຮັດດັ່ງຕໍ່ໄປນີ້ເພື່ອຟື້ນຕົວຂໍ້ມູນພາຍໃນມັນ:
    1. Restart SQL Server.
    2. ຫ້າມປະຕິບັດການໃດໆ.
    3. In SQL Server Management Studio, ປະຕິບັດຄໍາສັ່ງ SQL ຕໍ່ໄປນີ້:
      ໃຊ້ master declare @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) ຕັ້ງ @dbname='MyDatabase.mdf' exec sp_dboption @dbname,'single user','true' dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS) db'MyDatabase_LOSS, ສາມາດກວດສອບໄດ້ ) exec sp_dboption @dbname, 'ຜູ້ໃຊ້ດຽວ','false'
      

      ຖະແຫຼງການ

      dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS)
      

      ອາດຈະເຮັດໃຫ້ການສູນເສຍຂໍ້ມູນບາງຢ່າງໃນຕາຕະລາງຂອງທ່ານໃນເວລາທີ່ດໍາເນີນການສ້ອມແປງ.

      ໃນຂະນະທີ່ຖະແຫຼງການ

      dbcc checktable('MyTable',REPAIR_REBUILD)
      

      ຈະບໍ່ເຮັດໃຫ້ເກີດການສູນເສຍຂໍ້ມູນໃດໆໃນລະຫວ່າງການດໍາເນີນການສ້ອມແປງ, ແຕ່ມັນໃຊ້ເວລາຫຼາຍກວ່າ.

      ດັ່ງນັ້ນ, ຖ້າທ່ານບໍ່ຮີບດ່ວນ, ທໍາອິດທ່ານສາມາດພະຍາຍາມປະຕິບັດຄໍາສັ່ງ checktable dbcc ທີສອງເທົ່ານັ້ນ, ຖ້າຄໍາຖະແຫຼງທີ່ບໍ່ສາມາດຊ່ວຍຟື້ນຕົວຖານຂໍ້ມູນ, ຫຼັງຈາກນັ້ນທ່ານສາມາດປະຕິບັດຄໍາສັ່ງ checktable dbcc ທໍາອິດແລະທີສອງ.

      ຫຼັງຈາກທີ່ທ່ານສໍາເລັດການປະຕິບັດການສ້ອມແປງສໍາລັບຕາຕະລາງທີ່ເສຍຫາຍທັງຫມົດ, ທ່ານສາມາດໂທຫາ

      dbcc checkdb('MyDatabase.mdf')
      

      ອີກເທື່ອຫນຶ່ງເພື່ອເບິ່ງວ່າຕາຕະລາງໃນຖານຂໍ້ມູນໄດ້ຖືກແກ້ໄຂຫຼືບໍ່.

    ຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບຄໍາສັ່ງ checktable dbcc ສາມາດພົບໄດ້ທີ່ 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 ຂອງທ່ານ.