อาการ
เมื่อคุณดำเนินการการดำเนินการ DDL เช่นสร้างดัชนีหรือตารางที่ตัดใน SQL Server ๒๐๑๖การดำเนินการอาจถูกบล็อกถ้ามีทรานแซคชัน DDL อื่นที่กำลังทำงานอยู่ในฐานข้อมูลเดียวกัน
การแก้ไข
ปัญหานี้ได้รับการแก้ไขครั้งแรกในการอัปเดตที่สะสมของ SQL Server ต่อไปนี้:
การอัปเดตที่สะสมใหม่แต่ละรายการสำหรับ SQL Server ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมดและการแก้ไขการรักษาความปลอดภัยทั้งหมดที่รวมอยู่ในการอัปเดตที่สะสมก่อนหน้านี้ เราขอแนะนำให้คุณดาวน์โหลดและติดตั้งการอัปเดตที่สะสมล่าสุดสำหรับ SQL Server:
ข้อมูลเพิ่มเติม
เมื่อ DDL สร้างหรือลบตารางหรือดัชนีคุณจำเป็นต้องแทรกหรือลบ id แถวของตารางหรือดัชนีจาก sysrowsetsซึ่งจำเป็นต้องมีการเปิดระดับแถว X ล็อกบนรายการ เมื่อการดำเนินการนี้เสร็จสิ้นภายในทรานแซคชัน X lock จะถูกจัดเก็บไว้สำหรับระยะเวลาของทรานแซคชัน เมื่อทูเปิลแสดงว่า flushable ลบบัฟเฟอร์ที่จำเป็นต้องมีการทำซ้ำ sysrowsets เพื่อค้นหาตารางหรือดัชนีที่มีอยู่ เมื่อต้องการอ่านแถวแต่ละแถวจาก sysrowsets เขาต้องการที่จะเก็บการล็อกระดับแถวในรายการที่อ่านในขณะนี้ กระบวนการค้นหาหยุดทำงานเมื่อทูเปิลผู้นำเสนอจะค้นหาแถวแรกที่สามารถทำงานได้ ที่จุดนี้ทูเปิลผู้นำเสนอจะทำงานที่เกิดขึ้นจริงของการลบบัฟเฟอร์การลบแต่เมื่อต้องการตรวจสอบให้แน่ใจว่าแถวที่ค้นพบยังคงถูกต้องจะถือว่าเป็นการล็อกที่กำหนดบน rowsets ทั้งหมดจะถูกประเมินในระหว่างขั้นตอนการค้นหาจนกว่าจะเสร็จสิ้นการทำงานของเขาSysrowsets จะได้รับการสั่งซื้อโดย id ของแถวดังนั้นจึงสามารถเกิดขึ้นได้ว่าทูเปิลจะสแกนหลาย rowsets ที่มีอยู่ซึ่งไม่มีการกระทำที่จะทำได้แต่จะยังคงถือว่าการล็อกแล้วและจะมาถึงรายการใน Sysrowsets ซึ่งจะไม่สามารถรับการล็อกระดับแถวได้เนื่องจากเป็นการเปลี่ยนแปลงที่มีการใช้งานเป็นระยะเวลานาน ที่จุดนี้ DDLs ที่เกี่ยวข้องกับการเปลี่ยนแปลง id ของแถวจะถูกบล็อกหลังจากล็อกการทูเปิลของผู้เสนอญัตติ
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"
อ้างอิง
เรียนรู้เกี่ยวกับคำ ศัพท์เฉพาะ ทางที่ Microsoft ใช้เพื่ออธิบายการอัปเดตซอฟต์แวร์