อาการ
พิจารณาสถานการณ์ต่อไปนี้:
-
คุณมี Microsoft SQL Server แฟ้มบันทึกการจัดส่งหรือการสำรอง/การคืนค่าตั้งค่าระหว่างสองเซิร์ฟเวอร์
-
ฐานข้อมูลหลักมีของแฟ้มล็อกธุรกรรม (.ldf) เก็บอยู่บนดิสก์ที่มี "ไบต์ต่อเซกเตอร์กายภาพ" กำหนดเป็น 512 ไบต์
-
คุณทำธุรกรรมที่บันทึกสำเนาสำรองของฐานข้อมูลนี้ และจากนั้น คุณพยายามคืนค่า โดยใช้ตัวเลือกการสแตนด์บายบนฐานข้อมูลรอง
-
แฟ้มล็อกธุรกรรมฐานข้อมูลรอง (.ldf) จะอยู่บนดิสก์ที่มี "ไบต์ต่อเซกเตอร์กายภาพ" กำหนดเป็น 4096 ไบต์
ในสถานการณ์สมมตินี้ การดำเนินการคืนค่าล้มเหลว และส่งกลับข้อความแสดงข้อผิดพลาดต่อไปนี้:
ข้อผิดพลาด: 9004 ความรุนแรง: รัฐ 16 : 6 ครั้ง มีข้อผิดพลาดเกิดขึ้นขณะประมวลผลแฟ้มบันทึกสำหรับฐานข้อมูลชื่อ ถ้าเป็นไปได้ คืนค่าจากสำเนาสำรอง ถ้าไม่มีการสำรองข้อมูล อาจจำเป็นต้องสร้างแฟ้มบันทึก
หลังจากข้อผิดพลาดนี้เกิดขึ้น ฐานข้อมูลรองจะเข้าสู่สถานะ suspect
การแก้ไข
ปรับปรุงสะสม
ปัญหานี้ถูกถาวรแรกในการปรับปรุงสะสมต่อไปนี้ของ SQL Server:
หมายเหตุ หลังจากที่คุณติดตั้งโปรแกรมปรับปรุงนี้ คุณต้องเปิดใช้ค่าสถานะการติดตาม 3057 เพื่อเปิดใช้งานการแก้ไขนี้ เมื่อต้องการเปิดใช้งานการสืบค้นกลับค่าสถานะ 3057 ดูหัวข้อค่าสถานะการสืบค้นกลับ (คำสั่งกลุ่ม SQL)บนเว็บไซต์ Microsoft Developer Network (MSDN)
แต่ละโปรแกรมปรับปรุงสะสมใหม่สำหรับ SQL Server ประกอบด้วยโปรแกรมแก้ไขด่วนและการรักษาความปลอดภัยแก้ไขทั้งหมดที่ถูกรวมกับการปรับปรุงที่สะสมก่อนหน้านี้ ดูการปรับปรุงสะสมล่าสุดสำหรับ SQL Server:
หมายเหตุ สำหรับอินสแตนซ์ของ SQL SP3 R2 2008 ของเซิร์ฟเวอร์ คุณจำเป็นต้องปรับรุ่นเซิร์ฟเวอร์เป็นแบบล่าสุดปรับปรุงความปลอดภัยพร้อมใช้งานใน:
ดาวน์โหลดการปรับปรุงความปลอดภัยสำหรับ SP3 R2 2008 ของเซิร์ฟเวอร์ SQL
โปรแกรมแก้ไขด่วนสำหรับ SQL Server 2008 R2 SP2มีโปรแกรมแก้ไขด่วนที่รองรับพร้อมให้บริการจาก Microsoft อย่างไรก็ตาม โปรแกรมแก้ไขด่วนนี้มุ่งหวังเพื่อการแก้ไขเฉพาะปัญหาที่อธิบายไว้ในบทความนี้ ใช้ hotfix นี้เฉพาะกับระบบต่าง ๆ ที่พบปัญหานี้ หากโปรแกรมแก้ไขด่วนพร้อมสำหรับการดาวน์โหลด คุณจะเห็นส่วน "มีการดาวน์โหลดโปรแกรมแก้ไขด่วน" ที่ด้านบนของบทความฐานข้อมูลองค์ความรู้นี้ หากส่วนนี้ไม่ปรากฏขึ้น ส่งคำขอถึงฝ่ายบริการและการสนับสนุนลูกค้าของ Microsoft และวิธีการขอรับโปรแกรมแก้ไขด่วน หมายเหตุ ถ้ามีปัญหาอื่น ๆ เกิดขึ้น หรือถ้าจำเป็นต้องแก้ไขปัญหาใด ๆ คุณอาจต้องสร้างคำขอรับบริการแยกต่างหาก จะมีค่าใช้จ่ายในการสนับสนุนปกติกับคำถามเพิ่มเติมและเรื่องอื่น ๆ ที่ไม่มีสิทธิได้รับโปรแกรมแก้ไขด่วนเฉพาะนี้ สำหรับรายชื่อทั้งหมด ของหมายเลขโทรศัพท์ของฝ่ายบริการลูกค้าของ Microsoft และการสนับสนุน หรือ เพื่อสร้างการร้องขอบริการแยกต่างหาก แวะไปที่เว็บไซต์ของ Microsoft ต่อไปนี้:
http://support.microsoft.com/contactus/?ws=supportหมายเหตุ แบบฟอร์ม "โปรแกรมแก้ไขด่วนดาวน์โหลดพร้อมใช้งาน" แสดงภาษาโปรแกรมแก้ไขด่วนจะพร้อมใช้งาน ถ้าคุณไม่เห็นภาษาของคุณ อาจเป็น เพราะไม่มีโปรแกรมแก้ไขด่วนพร้อมใช้งานสำหรับภาษานั้น
วิธีแก้ไขปัญหาชั่วคราว
Microsoft ยืนยันว่านี่เป็นปัญหาในผลิตภัณฑ์ของ Microsoft ซึ่งแสดงไว้ในส่วน "นำไปใช้กับ" เมื่อต้องการแก้ไขปัญหานี้ ใช้วิธีการใดวิธีการหนึ่งวิธีแก้ไขปัญหาต่อไปนี้:
-
ย้ายแฟ้มล็อกธุรกรรมที่ปลายทางไปยังไดรฟ์ที่มี "ไบต์ต่อเซกเตอร์กายภาพ" กำหนดเป็น 512 ไบต์ หมายเหตุ สามารถระบุตำแหน่งแฟ้มการสแตนด์บายบนไดรฟ์ที่มี "ไบต์ต่อเซกเตอร์กายภาพ" กำหนดเป็นนั่น ยัง
-
คืนค่าแฟ้มบันทึกมีการสำรองข้อมูลโดยไม่ใช้ตัวเลือกการสแตนด์บาย ตัวเลือกการสแตนด์บาย แทนที่จะใช้ตัวเลือกกับ NORECOVERY ในระหว่างการดำเนินการคืนค่า
ข้อมูลเพิ่มเติม
คุณสามารถใช้โปรแกรมอรรถประโยชน์บรรทัดคำสั่ง Fsutilในการกำหนดค่า "ไบต์ต่อเซกเตอร์กายภาพ" ถ้าพารามิเตอร์นี้จะไม่ปรากฏในผลลัพธ์ของแบบ คุณต้องใช้โปรแกรมแก้ไขด่วนที่ระบุไว้ในKB982018 เมื่อต้องการตรวจสอบชนิดของไดรฟ์ที่คุณมี ให้ทำตามขั้นตอนเหล่านี้:
-
เรียกใช้คำสั่งต่อไปนี้ในพร้อมท์คำสั่งที่ยกระดับขึ้น:Fsutil fsinfo ntfsinfo x : หมายเหตุ ในคำสั่งนี้< x >หมายถึงไดรฟ์ที่ว่างเปล่า
-
ใช้ค่าสำหรับ "ไบต์ต่อเซกเตอร์" และ "ไบต์ต่อเซกเตอร์กายภาพ" เพื่อกำหนดชนิดของไดรฟ์ที่คุณมี เมื่อต้องการทำเช่นนี้ ใช้ตารางต่อไปนี้
ค่า "ไบต์ต่อเซกเตอร์"
ค่า "ไบต์ต่อเซกเตอร์กายภาพ"
ประเภทของไดรฟ์
4096
4096
4K ดั้งเดิม
512
4096
รูปแบบขั้นสูง (หรือที่เรียกอีกอย่างหนึ่งว่า 512E)
512
512
"บ้านเกิด" 512 ไบต์