KB3009974 - แก้ไข: การซิงโครไนซ์ช้าเมื่อดิสก์มีขนาดเซกเตอร์ต่างกันสําหรับไฟล์บันทึกแบบจําลองหลักและรองในสภาพแวดล้อม SQL Server AG และ Logshipping

นำไปใช้กับ
SQL Server 2014 Developer SQL Server 2014 Enterprise SQL Server 2014 Standard SQL Server 2012 Enterprise SQL Server 2012 Developer SQL Server 2012 Standard SQL Server 2016 Enterprise Core SQL Server 2016 Standard SQL Server 2016 Developer SQL Server 2016 Enterprise SQL Server 2016 Web SQL Server 2016 Express

หมายเหตุ

หลังจากที่คุณใช้โปรแกรมแก้ไขด่วนนี้ คุณต้องเปิดใช้งานการตั้งค่าสถานะการติดตาม 1800 เป็นพารามิเตอร์เริ่มต้นบนเซิร์ฟเวอร์หรือแบบจําลองทั้งหมดที่มีขนาดเซกเตอร์ทางกายภาพ 512 ไบต์ และเริ่มระบบใหม่ เพื่อให้โปรแกรมแก้ไขด่วนนี้ทํางานได้อย่างถูกต้อง

อาการ

ลองทำตามสถานการณ์ต่อไปนี้:

  • คุณเปิดใช้งานฟีเจอร์กลุ่มให้บริการ AlwaysOn หรือ Logshipping ใน Microsoft SQL Server

  • ดิสก์ที่จัดเก็บไฟล์บันทึกของแบบจําลองหลักและรองใน AlwaysOn Availability Group (AG) มีขนาดเซกเตอร์ที่แตกต่างกัน หรือในสภาพแวดล้อม Logshipping ดิสก์ที่เก็บไฟล์บันทึกสําหรับเซิร์ฟเวอร์หลัก Logshipping และเซิร์ฟเวอร์รองของ Logshipping จะมีขนาดเซกเตอร์ที่แตกต่างกัน ตัวอย่างเช่น

    • ไฟล์บันทึกแบบจําลองหลักจะอยู่บนดิสก์ที่มีขนาดเซกเตอร์ 512 ไบต์ อย่างไรก็ตาม ไฟล์บันทึกแบบจําลองรองจะอยู่บนดิสก์ที่มีขนาดเซกเตอร์ 4 กิโลไบต์ (KB)
    • ไฟล์บันทึกแบบจําลองหลักจะอยู่บนระบบภายในองค์กรที่มีขนาดเซกเตอร์ 512 ไบต์ อย่างไรก็ตาม แบบจําลองรองจะอยู่บนดิสก์ที่เก็บข้อมูล Windows Azure ที่มีขนาดเซกเตอร์ 4 กิโลไบต์ (KB)

ในสถานการณ์นี้ ข้อความแสดงข้อผิดพลาดต่อไปนี้ถูกบันทึกไว้ในบันทึกข้อผิดพลาดของ SQL Server ข้อความแสดงข้อผิดพลาดอาจยังคงมีต่อไปครู่หนึ่งหลังจากเริ่มระบบใหม่ หากมีบันทึกที่ไม่ได้นําไปใช้กับรายการรองก่อนที่จะเริ่มระบบของเซิร์ฟเวอร์ใหม่

หมายเหตุ

มี IO บันทึกที่จัดเรียงผิดพลาด X รายการซึ่งจําเป็นต้องย้อนกลับไปยัง IO แบบซิงโครนัส IO ปัจจุบันอยู่ในไฟล์ ....

นอกจากนี้ การซิงโครไนซ์ AG หรือ Logshipping จะทํางานช้ามากเนื่องจาก I/O แบบซิงโครนัส หากแบบจําลองรองอยู่ในที่เก็บข้อมูล Windows Azure จะใช้เวลานานกว่าที่คาดไว้ในกระบวนการซิงโครไนซ์ให้เสร็จสิ้น

หมายเหตุ ปัญหานี้เกิดขึ้นเมื่อคุณใช้ทั้งไดรฟ์ใหม่ที่มีขนาดเซกเตอร์ 4 KB และไดรฟ์เก่าที่มีขนาดเซกเตอร์ 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 จะมีโปรแกรมแก้ไขด่วนและการแก้ไขข้อบกพร่องด้านความปลอดภัยทั้งหมดที่รวมอยู่ในการอัปเดตแบบสะสมครั้งก่อนหน้า ดูการอัปเดตสะสมล่าสุดสําหรับ SQL Server:

วิธีแก้ไขปัญหาชั่วคราว

เมื่อต้องการแก้ไขปัญหานี้ ให้ย้ายไฟล์บันทึกทรานแซคชันที่ปลายทางไปยังไดรฟ์ที่มี การตั้งค่าไบต์ต่อเซกเตอร์ทางกายภาพ เป็น 512 ไบต์

สถานะ

Microsoft ได้ยืนยันว่านี่เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ที่แสดงไว้ในส่วน "นำไปใช้กับ"

ข้อมูลเพิ่มเติม

แนวทางปฏิบัติคือ พยายามตรวจสอบให้แน่ใจว่าดิสก์ทั้งหมดบนแบบจําลองทั้งหมด (อย่างน้อยดิสก์ทั้งหมดที่โฮสต์ไฟล์บันทึก) มีขนาดเซกเตอร์เท่ากัน ในสภาพแวดล้อมแบบผสม ซึ่งส่วนรองมีเซกเตอร์ทางกายภาพ 512 ไบต์ และเซกเตอร์หลักมีขนาดเซกเตอร์ 4 KB ควรใช้ TF 1800 เป็นแฟล็กเริ่มต้นบนเซิร์ฟเวอร์หรือแบบจําลองทั้งหมดที่มีขนาดเซกเตอร์ทางกายภาพ 512 ไบต์และเริ่มระบบใหม่ ซึ่งทําให้มั่นใจว่ารูปแบบการสร้างบันทึกที่กําลังดําเนินอยู่จะใช้ขนาดเซกเตอร์ 4 KB

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่ SQL Server ทํางานกับเซกเตอร์ขนาดใหญ่ โปรดดูโพสต์ต่อไปนี้ในบล็อกการสนับสนุน:

SQL Server–พื้นที่จัดเก็บ/VHDx และขนาดเซกเตอร์ 4K

คุณสามารถใช้โปรแกรมอรรถประโยชน์พร้อมท์คําสั่ง Fsutil เพื่อกําหนดไบต์ต่อค่าเซกเตอร์ทางกายภาพ หากพารามิเตอร์นี้ไม่สามารถมองเห็นได้ในผลลัพธ์ คุณต้องใช้โปรแกรมแก้ไขด่วนที่ระบุไว้ในบทความ KB 982018

เมื่อต้องการตรวจสอบชนิดของไดรฟ์ที่คุณมี ให้ทําตามขั้นตอนเหล่านี้:

  1. เรียกใช้คําสั่งต่อไปนี้ที่พร้อมท์คําสั่งด้วยสิทธิ์ผู้ดูแล:
    Fsutil fsinfo ntfsinfo x: หมายเหตุ พื้นที่ที่สํารองไว้ x แสดงถึงไดรฟ์ที่คุณกําลังตรวจสอบ

  2. ใช้ค่าสําหรับไบต์ต่อเซกเตอร์และไบต์ต่อฟิสิคเซกเตอร์เพื่อกําหนดชนิดของไดรฟ์ที่คุณมี เมื่อต้องการทําสิ่งนี้ ให้ใช้ตารางต่อไปนี้:

    ค่า "ไบต์ต่อเซกเตอร์" ค่า "ไบต์ต่อเซกเตอร์ทางกายภาพ" ชนิดของไดรฟ์
    4096 4096 เนทีฟ 4K
    512 4096 รูปแบบขั้นสูง (หรือที่เรียกว่า 512E)
    512 512 เนทีฟ 512 ไบต์