นำไปใช้กับ
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows

อาการ

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

ตัวอย่างเช่น สมมติว่าคอลัมน์ที่ชื่อ "column1" ถูกรวมอยู่ในดัชนีแบบกลุ่มหรือดัชนีที่ไม่ซ้ํากัน เมื่อค่าของคอลัมน์ถูกเปลี่ยนจากค่าที่มากกว่าเป็นค่าที่น้อยกว่า (เช่น การเปลี่ยนค่าจาก 20 เป็น 16) ตารางด้านการติดตามการเปลี่ยนแปลงจะได้รับการดําเนินการแทรกก่อนการดําเนินการลบ ตัวอย่างเช่น ได้รับการดําเนินการแทรกระเบียนแถวของบันทึกทรานแซคชันก่อนที่จะมีการลบการดําเนินการของแถว หรือ "I" จะถูกแทรกก่อน "D"

Sys_change_version

sys_change_create_version

sys_change_operation

sys_change_column

sys_change_context

PK_column

1116

19

ฉัน

NULL

NULL

5639485628

1116

20

D

NULL

NULL

5639485628

เมื่อค่าของคอลัมน์ถูกเปลี่ยนจากน้อยกว่าเป็นค่าที่มากกว่า (เช่น การเปลี่ยนค่าจาก 16 เป็น 20) "D" จะถูกแทรกก่อน "I"

Sys_change_version

sys_change_create_version

sys_change_operation

sys_change_column

sys_change_context

PK_column

1126

32

D

NULL

NULL

5639485628

1126

33

ฉัน

NULL

NULL

5639485628

สาเหตุ

ปัญหานี้เกิดขึ้นเนื่องจากการจัดลําดับที่ไม่ถูกต้องระหว่างคู่ลบ/แทรกในตารางด้านการติดตามการเปลี่ยนแปลง

การแก้ไข

การแก้ไขสําหรับปัญหานี้จะรวมอยู่ในการอัปเดตสําหรับSQL Serverต่อไปนี้:

         การอัปเดตสะสม 8 สําหรับ SQL Server 2017

         การอัปเดตสะสม 9 สําหรับ SQL Server 2016 Service Pack 1

การอัปเดตสะสม 12 สําหรับ SQL Server 2014 SP2

เกี่ยวกับรุ่นSQL Server

แต่ละรุ่นใหม่สําหรับSQL Serverประกอบด้วยการแก้ไขด่วนและการแก้ไขข้อบกพร่องด้านความปลอดภัยทั้งหมดที่อยู่ในรุ่นก่อนหน้า เราขอแนะนําให้คุณติดตั้งรุ่นล่าสุดสําหรับ SQL Server:

การอัปเดตสะสมล่าสุดสําหรับ SQL Server 2017

รุ่นล่าสุดสําหรับ SQL Server 2016

การอัปเดตสะสมล่าสุดสําหรับ SQL Server 2014

สถานะ

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

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

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

เมื่อฟังก์ชัน CHANGETABLE ถูกเรียกให้แจงนับการเปลี่ยนแปลง รายการเหล่านี้จะถูกเรียงลําดับตามค่าคีย์หลัก แล้วการดําเนินการจะถูกรวม ถ้าการอัปเดตแทรกค่าที่ต่ํากว่า การดําเนินการ "I" จะทํางานบนตารางด้านข้างก่อน ตามด้วยการดําเนินการ "D" ซึ่งทําให้การดําเนินการที่ไม่ถูกต้องถูกส่งกลับสําหรับแถวนี้ เนื่องจาก "I" ตามด้วย "D" ถูกรวมเป็น "D"

เนื่องจากเฉพาะค่าคีย์หลักเท่านั้นที่จะถูกเก็บรักษาไว้ในตารางด้านข้าง จึงไม่จําเป็นต้องมีรายการแยกกันสองรายการ ค่านี้เป็นจริงตราบใดที่คอลัมน์คีย์หลักไม่ได้รับการอัปเดต

ปัญหานี้ได้รับการแก้ไขแล้วสําหรับคอลัมน์ที่ไม่ซ้ํากันที่ไม่ใช่คอลัมน์หลัก ในกรณีนี้ เมื่อการอัปเดตเกิดขึ้น แถวเดียวเท่านั้นจะถูกแทรกโดยมี "U" เป็นการดําเนินการอัปเดตแทนที่จะเป็นสองรายการที่มี "D" และ "I"

อ้างอิง

เรียนรู้เกี่ยวกับ คําศัพท์เฉพาะทาง ที่ Microsoft ใช้เพื่ออธิบายการอัปเดตซอฟต์แวร์

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ต้องการตัวเลือกเพิ่มเติมหรือไม่

สํารวจสิทธิประโยชน์ของการสมัครใช้งาน เรียกดูหลักสูตรการฝึกอบรม เรียนรู้วิธีการรักษาความปลอดภัยอุปกรณ์ของคุณ และอื่นๆ