ເມື່ອເຈົ້າ SQL Server ຖານຂໍ້ມູນ MDF ເສຍຫາຍ, ທ່ານສາມາດນໍາໃຊ້ວິທີການດັ່ງຕໍ່ໄປນີ້ເພື່ອຟື້ນຕົວຂໍ້ມູນໃນມັນ, ເພື່ອຫຼຸດຜ່ອນການສູນເສຍ:
ຫມາຍເຫດ: ກ່ອນທີ່ຈະປະຕິບັດການຟື້ນຕົວຂໍ້ມູນໃດໆ, ກະລຸນາສໍາຮອງຂໍ້ມູນໄຟລ໌ MDF & NDF ທີ່ເສຍຫາຍຂອງທ່ານກ່ອນ.
- ຫນ້າທໍາອິດຂອງການທັງຫມົດ, ທ່ານສາມາດພະຍາຍາມ SQL Server ຄໍາສັ່ງໃນຕົວ DBCC ກວດສອບ ເພື່ອຟື້ນຕົວຖານຂໍ້ມູນຂອງທ່ານ. ສົມມຸດວ່າໄຟລ໌ຖານຂໍ້ມູນທີ່ເສຍຫາຍແມ່ນ 'MyDatabase.mdf', ຫຼັງຈາກນັ້ນທ່ານສາມາດເຮັດດັ່ງຕໍ່ໄປນີ້ເພື່ອຟື້ນຕົວຂໍ້ມູນພາຍໃນມັນ:
- Restart SQL Server.
- ຫ້າມປະຕິບັດການໃດໆ.
- 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
- ຖ້າຫຼັງຈາກໃຊ້ວິທີການ 1, dbcc checkdb ຍັງລາຍງານຂໍ້ຜິດພາດໃນບາງຕາຕະລາງ, ທ່ານສາມາດລອງ SQL Server ຄໍາສັ່ງສ້າງໃນ DBCC CHECKTABLE ເພື່ອກູ້ຄືນຕາຕະລາງເຫຼົ່ານີ້ຢູ່ໃນຖານຂໍ້ມູນຂອງທ່ານ. ສົມມຸດວ່າໄຟລ໌ຖານຂໍ້ມູນທີ່ເສຍຫາຍແມ່ນ 'MyDatabase.mdf' ແລະຕາຕະລາງທີ່ທ່ານຕ້ອງການສ້ອມແປງແມ່ນ 'MyTable', ຫຼັງຈາກນັ້ນທ່ານສາມາດເຮັດດັ່ງຕໍ່ໄປນີ້ເພື່ອສ້ອມແປງມັນ:
- Restart SQL Server.
- ຫ້າມປະຕິບັດການໃດໆ.
- 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
- ຖ້າວິທີການ 1 ແລະ 2 ບໍ່ສາມາດແກ້ໄຂຖານຂໍ້ມູນທີ່ເສຍຫາຍຫຼືຕາຕະລາງ, ຫຼືຖ້າວິທີການເຫຼົ່ານີ້ບໍ່ສາມາດຟື້ນຕົວຂໍ້ມູນທີ່ທ່ານຕ້ອງການ, ຫຼັງຈາກນັ້ນທ່ານສາມາດນໍາໃຊ້. DataNumen SQL Recovery ເພື່ອຟື້ນຕົວຂໍ້ມູນຈາກຖານຂໍ້ມູນ MDF ຂອງທ່ານ.