ฉันลบประมาณ 2,000,000 ระเบียนจากตาราง SQL Server 2008 ระยะไกลโดยไม่ตั้งใจ เซิร์ฟเวอร์ไม่อนุญาตให้ฉันเข้าถึงไฟล์สำรองข้อมูลทางฝั่งเซิร์ฟเวอร์
มีวิธีใดที่จะเรียกคืนบันทึกเหล่านี้หรือไม่
ฉันลบประมาณ 2,000,000 ระเบียนจากตาราง SQL Server 2008 ระยะไกลโดยไม่ตั้งใจ เซิร์ฟเวอร์ไม่อนุญาตให้ฉันเข้าถึงไฟล์สำรองข้อมูลทางฝั่งเซิร์ฟเวอร์
มีวิธีใดที่จะเรียกคืนบันทึกเหล่านี้หรือไม่
คำตอบ:
ฐานข้อมูลของคุณอยู่ในโหมดการกู้คืนเต็มหรือไม่?
ถ้าใช่คุณกำลังสำรองข้อมูลบันทึกธุรกรรมอยู่หรือไม่?
หากไม่มี (ไม่ใช่ในโหมดการกู้คืนเต็ม) ให้คืนค่าการสำรองข้อมูลเต็มรูปแบบล่าสุดเป็นฐานข้อมูลที่มีชื่อแตกต่างกัน (อย่าเขียนทับฐานข้อมูลที่คุณมีอยู่แล้ว) จากจุดนี้คุณจะสามารถกู้คืนระเบียนใดก็ได้ที่ออนไลน์ขณะทำการสำรองข้อมูล แต่คุณจะสูญเสียการเปลี่ยนแปลงทั้งหมดตั้งแต่นั้นมา
SQL Server เก็บบันทึกสำหรับแต่ละระเบียนที่ถูกลบ คุณสามารถค้นหาบันทึกเหล่านี้ผ่านfn_dblog
ฟังก์ชั่น SQL Server
SELECT [RowLog Contents 0]
FROM sys.fn_dblog(NULL, NULL)
WHERE
AllocUnitName = 'dbo.TableName'
AND Context IN ( 'LCX_MARK_AS_GHOST', 'LCX_HEAP' )
AND Operation in ( 'LOP_DELETE_ROWS' )
;
แต่บันทึกนี้อยู่ในรูปแบบ Hex และคุณต้องแปลงรูปแบบ Hex นี้เป็นข้อมูลจริงของคุณ
บทความด้านล่างจะช่วยคุณกู้คืนระเบียนที่ถูกลบตามวิธีที่กำหนดไว้ข้างต้น:
http://raresql.com/2011/10/22/how-to-recover-deleted-data-from-sql-sever/
@user1059637
- คุณมีทัศนคติอย่างไรกับคนที่เพิ่มฟังก์ชั่นในรหัส
น่าเสียดายที่เราไม่สามารถช่วยเหลือคุณได้หากไม่มีข้อมูลเพิ่มเติม แต่จากคำถามของคุณฉันเห็นว่าคุณได้ลบสิ่งที่ดูเหมือนจะเป็น 2 ล้านบันทึกจากฐานข้อมูลของคุณ เป็นไปได้ว่าคุณจะไม่สามารถกู้คืนข้อมูลนี้ได้เว้นแต่ว่าคุณจะเข้าสู่ระบบฐานข้อมูลของคุณอย่างเต็มรูปแบบและซื้อเครื่องมือเฉพาะบางอย่าง
หากคุณสามารถอธิบายรายละเอียดเพิ่มเติมได้ว่าอะไรคือสิ่งที่คุณคิดว่าทำไปแล้วและทำไมคุณถึงรู้สึกว่าคุณไม่สามารถรับข้อมูลกลับมาและสามารถอธิบายการจัดระเบียบฐานข้อมูลของคุณได้เราอาจช่วยคุณได้มากกว่านี้
คำแนะนำทั่วไป: ถ้าคุณคิดว่าคุณได้ลบ 2 ล้านระเบียนคุณอาจจะรู้สึกประหลาดใจเล็กน้อยในตอนนี้ ดังนั้นคุณควรหยุดพักห้านาทีสงบสติอารมณ์และทบทวนปัญหา นอกจากนี้คุณควรบอกหัวหน้าของคุณทันทีหากมีเหตุผล (อย่าปลุกใครสักคนตอนตีสองเพื่อบอกพวกเขา) และคุณกำลังหาทางแก้ปัญหา ดีกว่าที่จะยอมรับสิ่งที่เกิดขึ้นกว่าที่จะพยายามกู้คืนอย่างเมามันและอาจทำให้เรื่องแย่ลงและซ่อนรายละเอียด การรู้ว่าเจ้านายของคุณสามารถช่วยได้บ้างช่วยให้คุณแก้ไขปัญหาได้ อย่างที่ฉันพูดเพียงคำแนะนำทั่วไป