KB4055758 - การแก้ไข: ลักษณะการทํางานที่ไม่สอดคล้องกันสําหรับการส่งกลับช่องว่างต่อท้ายที่ส่วนท้ายของข้อมูล CHAR และ BINARY ใน SQL Server

นำไปใช้กับ
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 2016 Service Pack 1 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 2014 Service Pack 2 - 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

อาการ

สมมติว่า คุณมีตาราง microsoft SQL Server ที่มีอย่างน้อยหนึ่งดัชนีที่สร้างไว้บนตาราง เมื่อคุณคิวรีกับตาราง SQL Server อาจทําช่องว่างภายในข้อมูลที่ไม่สอดคล้องกันสําหรับคอลัมน์ CHAR และ BINARY ลักษณะการทํางานที่ไม่สอดคล้องกันสําหรับการส่งกลับค่าว่างต่อท้ายที่ส่วนท้ายของคอลัมน์ข้อมูล CHAR และ BINARY จะขึ้นอยู่กับเงื่อนไขต่อไปนี้:

  • การตั้งค่าของ ANSI_PADDING เมื่อสร้างคอลัมน์ในตาราง SQL Server
  • การตัดสินใจที่จะดําเนินการสแกนตารางหรือค้นหาดัชนีในคอลัมน์

สาเหตุ

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

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

ลักษณะการทํางานของ SQL Server นี้ไม่สอดคล้องกับลักษณะการทํางานที่ระบุไว้ในบทความต่อไปนี้: การใช้ข้อมูล Char และ Varchar

หมายเหตุ

ถ้า ANSI_PADDING เปิดอยู่เมื่อสร้างคอลัมน์ NULL อักขระ คอลัมน์จะทํางานเหมือนกับคอลัมน์ CHAR NOT NULL: ค่าจะอยู่ทางด้านขวากับขนาดของคอลัมน์ ถ้า ANSI_PADDING เป็น ปิด เมื่อสร้างคอลัมน์ NULL อักขระ คอลัมน์จะทํางานเหมือนกับคอลัมน์ varchar ที่ตั้งค่าเป็น ปิด ANSI_PADDING: ช่องว่างต่อท้ายจะถูกตัดทอน

การแก้ปัญหา

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

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

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

การอัปเดตสะสม 6 สําหรับ SQL Server 2016 SP1

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

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

เกี่ยวกับการอัปเดตสะสมสําหรับ SQL Server:

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

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

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

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

สถานะ

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

การอ้างอิง

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