อาการ
พิจารณาสถานการณ์ต่อไปนี้:
-
คุณมีฐานข้อมูล Microsoft SQL Server ๒๐๑๒ที่มีตัวเลือกการ ALLOW_SNAPSHOT_ISOLATION และ READ_COMMITTED_SNAPSHOTเปิดใช้งาน
-
คุณมีคิวรีที่พร้อมกันอย่างน้อยสามแบบที่เรียกใช้กับตารางเดียวกัน
-
คิวรีใช้คำแนะนำคิวรี(TABLOCK, UPDLOCK)
-
แต่ละคิวรีจะถูกตัดในคำสั่งเริ่มต้นที่ชัดเจนแต่จะไม่มีการดำเนินการคำสั่งทรานทราน
เมื่อคิวรีแรกมีความมุ่งมั่นในสถานการณ์สมมตินี้แบบสอบถามอื่นๆจะการชะงักงันอย่างใดอย่างหนึ่ง เมื่อ READ_COMMITTED_SNAPSHOT เปิดใช้งานร่วมกับคำแนะนำแบบสอบถาม TABLOCK และ UPDLOCK เซสชันจะใช้การล็อก IX บนตาราง การชะงักงันเกิดขึ้นเมื่อเซสชันพร้อมกันสองเซสชันพยายามแปลงตัวล็อก IX เป็น X ล็อกในเวลาเดียวกัน ถ้า READ_COMMITTED_SNAPSHOT ปิดใช้งานเซสชันจะได้รับการล็อกหกตัวที่จะไม่ล็อกตายเมื่อพวกเขาจะถูกแปลงเป็น X ล็อก โปรแกรมแก้ไขด่วนที่เน้นลักษณะการทำงานนี้โดยการอนุญาตให้ LCK_M_SCH_S ล็อกแทนที่จะเป็นตัวล็อก IX เมื่อREAD_COMMITTED_SNAPSHOTใช้กับคำแนะนำTABLOCKและUPDLOCK บันทึกย่อ นอกจากนี้ปัญหานี้เกิดขึ้นใน Microsoft SQL Server ๒๐๐๘ R2 โปรแกรมแก้ไขด่วนสำหรับ SQL Server ๒๐๐๘ R2 จะได้รับการเผยแพร่เร็วๆนี้
การแก้ไข
ปัญหานี้ได้รับการแก้ไขแล้วในการอัปเดตที่สะสมของ SQL Server ครั้งแรก
การอัปเดตที่สะสม8สำหรับ SQL Server ๒๐๑๒ SP1 /en-us/help/2917531
การอัปเดตที่สะสมใหม่แต่ละรายการสำหรับ SQL Server ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมดและการแก้ไขการรักษาความปลอดภัยทั้งหมดที่รวมอยู่ในการอัปเดตที่สะสมก่อนหน้านี้ ตรวจสอบการอัปเดตที่สะสมล่าสุดสำหรับ SQL Server:
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"