เรามีฐานข้อมูลขนาดใหญ่มาก (~ 6TB) ซึ่งไฟล์บันทึกธุรกรรมถูกลบ (ในขณะที่ SQL Server ปิดตัวลงเราได้ลอง:
- การถอดและติดตั้งฐานข้อมูลอีกครั้ง และ
- การยกเลิกการลบไฟล์บันทึกธุรกรรม
... แต่ยังไม่มีอะไรทำงาน
เรากำลังทำงานอยู่:
ALTER DATABASE <dbname> REBUILD
LOG ON (NAME=<dbname>,FILENAME='<logfilepath>')
... แต่ด้วยขนาดของฐานข้อมูลอาจใช้เวลาสองสามวันจึงจะเสร็จสมบูรณ์
คำถาม
มีความแตกต่างระหว่างคำสั่งด้านบนและคำสั่งต่อไปนี้หรือไม่?
DBCC CHECKDB ('<dbname>', REPAIR_ALLOW_DATA_LOSS)
เราควรจะดำเนินการ
REPAIR_ALLOW_DATA_LOSS
แทนหรือไม่
เป็นที่น่าสังเกตว่าข้อมูลนั้นมาจากแหล่งอื่น ๆ เพื่อให้สามารถสร้างฐานข้อมูลใหม่ได้อย่างไรก็ตามเราสงสัยว่าจะซ่อมแซมฐานข้อมูลได้เร็วกว่าการแทรกข้อมูลทั้งหมดอีกครั้ง
ปรับปรุง
สำหรับคะแนนการรักษาเหล่านั้น: ALTER DATABASE/REBUILD LOG
คำสั่งเสร็จสิ้นหลังจากประมาณ 36 ชั่วโมงและรายงาน:
คำเตือน: บันทึกสำหรับฐานข้อมูล 'dbname' ได้ถูกสร้างขึ้นใหม่ ความสอดคล้องของธุรกรรมสูญหายไป สายโซ่ RESTORE ใช้งานไม่ได้และเซิร์ฟเวอร์ไม่มีบริบทในไฟล์บันทึกก่อนหน้านี้อีกต่อไปดังนั้นคุณจะต้องรู้ว่าไฟล์เหล่านั้นคืออะไร
คุณควรรัน DBCC CHECKDB เพื่อตรวจสอบความสอดคล้องทางกายภาพ ฐานข้อมูลถูกวางในโหมด dbo-only เมื่อคุณพร้อมที่จะทำให้ฐานข้อมูลพร้อมใช้งานคุณจะต้องรีเซ็ตตัวเลือกฐานข้อมูลและลบไฟล์บันทึกเพิ่มเติม
จากนั้นเราก็วิ่งDBCC CHECKDB
(ใช้เวลาประมาณ 13 ชั่วโมง) ซึ่งก็ประสบความสำเร็จ สมมติว่าเราได้เรียนรู้ถึงความสำคัญของการสำรองฐานข้อมูลแล้ว (และอนุญาตให้ผู้จัดการโครงการเข้าถึงเซิร์ฟเวอร์ ... )