หลังจากที่คุณนําโปรแกรมแก้ไขด่วนนี้ไปใช้ คุณต้องเปิดใช้งานค่าสถานะการติดตาม 1800 เป็นพารามิเตอร์เริ่มต้นบนเซิร์ฟเวอร์หรือแบบจําลองทั้งหมดที่มีขนาดเซกเตอร์ทางกายภาพขนาด 512 ไบต์ และเริ่มการทํางานใหม่ เพื่อให้โปรแกรมแก้ไขด่วนนี้ทํางานได้อย่างถูกต้อง
อาการ
พิจารณาสถานการณ์ต่อไปนี้:
-
คุณเปิดใช้งานคุณลักษณะกลุ่มความพร้อมใช้งาน AlwaysOn หรือ Logshipping ใน Microsoft SQL Server
-
ดิสก์ที่จัดเก็บไฟล์บันทึกของแบบจําลองหลักและแบบจําลองรองในกลุ่มความพร้อมใช้งาน AlwaysOn (AG) มีขนาดเซกเตอร์ที่แตกต่างกัน หรือในสภาพแวดล้อม Logshipping ดิสก์ที่จัดเก็บไฟล์บันทึกสําหรับ Logshipping เซิร์ฟเวอร์หลักและ Logshipping เซิร์ฟเวอร์รองมีขนาดเซกเตอร์ที่แตกต่างกัน ตัวอย่างเช่น:
-
แฟ้มบันทึกแบบจําลองหลักอยู่บนดิสก์ที่มีขนาดเซกเตอร์ 512 ไบต์ อย่างไรก็ตาม แฟ้มบันทึกแบบจําลองรองอยู่บนดิสก์ที่มีเซกเตอร์ขนาด 4 กิโลไบต์ (KB)
-
ไฟล์บันทึกแบบจําลองหลักอยู่บนระบบภายในองค์กรที่มีเซกเตอร์ขนาด 512 ไบต์ อย่างไรก็ตาม แบบจําลองรองอยู่บนดิสก์ Windows Azure Storage ที่มีเซกเตอร์ขนาด 4 กิโลไบต์ (KB)
-
ในสถานการณ์สมมตินี้ ข้อความแสดงข้อผิดพลาดต่อไปนี้ถูกบันทึกในบันทึกข้อผิดพลาด SQL Server ข้อความแสดงข้อผิดพลาดอาจดําเนินต่อไปสักระยะหนึ่งหลังจากเริ่มระบบใหม่ถ้ามีแฟ้มบันทึกที่ไม่ได้นําไปใช้กับรายการรองก่อนที่จะเริ่มการทํางานของเซิร์ฟเวอร์ใหม่
มีล็อก IOs ที่จัดแนวไม่ถูกต้อง X ซึ่งจําเป็นต้องย้อนกลับไปยัง IO แบบซิงโครนัส IO ปัจจุบันอยู่ในไฟล์ ....
นอกจากนี้ AG หรือการซิงโครไนซ์ Logshipping จะทํางานช้ามากเนื่องจาก I/Os แบบซิงโครนัส ถ้าแบบจําลองรองอยู่ใน Windows Azure Storage จะใช้เวลานานกว่าที่คาดไว้ในการดําเนินการซิงโครไนซ์ให้เสร็จสิ้น
หมายเหตุ ปัญหานี้เกิดขึ้นเมื่อคุณใช้ทั้งไดรฟ์ใหม่ที่มีขนาดเซกเตอร์ขนาด 4 กิโลไบต์และไดรฟ์เก่าที่มีขนาดเซกเตอร์ขนาด 512 ไบต์ สําหรับข้อมูลเพิ่มเติมเกี่ยวกับไดรฟ์ใหม่ ดูที่ SQL Server - ไดรฟ์ใหม่ ใช้ขนาดเซกเตอร์ 4K และ SQL Server–พื้นที่จัดเก็บ/VHDx และขนาดเซกเตอร์ 4K
การแก้ไข
ปัญหานี้ได้รับการแก้ไขเป็นครั้งแรกในการอัปเดตแบบสะสมของ SQL Server ต่อไปนี้
การอัปเดตสะสม 5 สําหรับ SQL Server 2014 /en-us/help/3011055
การอัปเดตสะสม 3 สําหรับ SQL Server 2012 SP2 /en-us/help/3002049
การอัปเดตสะสม 13 สําหรับ SQL Server 2012 SP1 /en-us/help/3002044
หลังจากที่คุณใช้โปรแกรมแก้ไขด่วน และเปิดใช้งานติดตามค่าสถานะ 1800 เป็นพารามิเตอร์เริ่มต้นบนแบบจําลองเซิร์ฟเวอร์ทั้งหมดที่ทํางานบนดิสก์ที่มีเซกเตอร์ขนาด 512 ไบต์ คุณสังเกตเห็นการเพิ่มขึ้นเล็กน้อยในขนาดของแฟ้มต่อไปนี้:
-
ไฟล์ล็อกธุรกรรม
-
การสํารองข้อมูลบันทึก
นอกจากนี้ คุณสังเกตเห็นว่า ข้อความต่อไปนี้ถูกบันทึกในบันทึก SQL Server ข้อผิดพลาดของเซิร์ฟเวอร์หลัก:
ส่วนท้ายของล็อกสําหรับฐานข้อมูล 'ชื่อ ฐานข้อมูล <>' กําลังเขียนใหม่เพื่อให้ตรงกับขนาดเซกเตอร์ใหม่ 4096 ไบต์
นี่คือข้อความแสดงข้อมูลที่สามารถละเว้นได้อย่างปลอดภัย
แต่ละปรับปรุงสะสมใหม่สําหรับ SQL Server ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมด และการแก้ไขข้อบกพร่องด้านความปลอดภัยทั้งหมดที่รวมอยู่ในการปรับปรุงสะสมก่อนหน้านี้ ดูการอัปเดตแบบสะสมล่าสุดสําหรับ SQL Server:
วิธีแก้ไขปัญหาชั่วคราว
เมื่อต้องการแก้ไขปัญหานี้ ให้ย้ายไฟล์บันทึกธุรกรรมที่ปลายทางไปยังไดรฟ์ที่มี ไบต์ต่อเซกเตอร์ทางกายภาพ ที่ตั้งค่าเป็น 512 ไบต์
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"
ข้อมูลเพิ่มเติม
แนวทางปฏิบัติที่ดีที่สุดคือ ลองตรวจสอบให้แน่ใจว่าดิสก์ทั้งหมดในแบบจําลองทั้งหมด (อย่างน้อยดิสก์ทั้งหมดที่โฮสต์ไฟล์บันทึก) มีขนาดเซกเตอร์เดียวกัน ในสภาพแวดล้อมแบบผสม ที่รองมีเซกเตอร์กายภาพ 512 ไบต์ และหลักมีขนาดเซกเตอร์ 4 KB ควรใช้ TF 1800 เป็นค่าสถานะเริ่มต้นบนเซิร์ฟเวอร์หรือแบบจําลองทั้งหมดที่มีขนาดเซกเตอร์ทางกายภาพขนาด 512 ไบต์และเริ่มระบบใหม่ สิ่งนี้ทําให้มั่นใจว่ารูปแบบการสร้างบันทึกอย่างต่อเนื่องใช้ขนาดเซกเตอร์ 4 กิโลไบต์
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่ SQL Server ทํางานกับเซกเตอร์ขนาดใหญ่ขึ้น โปรดดูโพสต์ต่อไปนี้ในบล็อกการสนับสนุน:
SQL Server–พื้นที่จัดเก็บ/VHDx และขนาด
เซกเตอร์ 4K
คุณสามารถใช้โปรแกรมอรรถประโยชน์พร้อมท์คําสั่ง Fsutil เพื่อกําหนดไบต์ต่อค่าเซกเตอร์ทางกายภาพ ถ้าพารามิเตอร์นี้ไม่ปรากฏในผลลัพธ์ คุณต้องใช้โปรแกรมแก้ไขด่วนที่ระบุในบทความ KB 982018
เมื่อต้องการตรวจสอบประเภทไดรฟ์ที่คุณมี ให้ทําตามขั้นตอนต่อไปนี้:
-
เรียกใช้คําสั่งต่อไปนี้ที่พร้อมท์คําสั่งด้วยสิทธิ์ผู้ดูแล:
Fsutil fsinfo ntfsinfo x: หมายเหตุ ตัวยึด x แสดงไดรฟ์ที่คุณกําลังตรวจสอบ
-
ใช้ค่าสําหรับ ไบต์ต่อเซกเตอร์ และ ไบต์ต่อเซกเตอร์ทางกายภาพ เพื่อระบุชนิดของไดรฟ์ที่คุณมี เมื่อต้องการทําเช่นนี้ ให้ใช้ตารางต่อไปนี้:
ค่า "ไบต์ต่อเซกเตอร์"
ค่า "ไบต์ต่อเซกเตอร์ทางกายภาพ"
ชนิดของไดรฟ์
4096
4096
4K เนทีฟ
512
4096
รูปแบบขั้นสูง (หรือที่เรียกว่า 512E)
512
512
512 ไบต์ ดั้งเดิม