9/03/2010

MSSQL : การกู้ข้อมูล SQL ที่ยังไม่ได้ Backup ด้วย Tail Log

สำหรับท่านที่ดูแลฐานข้อมูล Microsoft SQL Server อยู่ อาจจะเคยประสบปัญหาเกี่ยวกับฐานข้อมูลพังกันมาไม่มากก็น้อยหล่ะครับ ทีนี้เมื่อฐานข้อมูลพัง เราจะทำยังไงดีหล่ะครับ แน่นอน ก็คงจะนึกถึงชุด backup ล่าสุดที่เราได้เคย backup ไว้ แล้วก็พยายามจะ Restore ขึ้นมา แต่ก็เป็นอย่างที่คิดไว้แหล่ะครับ เราก็จะกู้ได้เฉพาะข้อมูลที่เราได้ backup ไปแล้วเท่านั้น ส่วนข้อมูลที่ยังไม่ได้ backup หล่ะ!!!

โครงสร้างของ SQL Database
อย่างที่หลายๆ ท่านทราบกันดีว่าใน 1 sql database จะต้องมีไฟล์ ดังนี้

Data File (.mdf)
Transaction Log File (.ldf)
ในไฟล์ ldf นี่แหล่ะครับ ที่จะยังมี data ที่เรายังไม่ได้ backup อยู่!!!

คำสั่งต่อไปนี้เป็นวิธีการกู้ข้อมูล โดยดึง data ที่อยู่ในไฟล์ ldf ขึ้นมาครับ แต่ต้องมีข้อแม้ว่าไฟล์ ldf จะต้องไม่เสียด้วยนะครับ (ถ้าเสียก็เศร้าหล่ะครับ)

BACKUP LOG AdventureWorks
TO Disk = ‘c:\backup\adv_log.bak’
WITH NO_TRUNCATE;
GO