อาการ
สมมติว่า คุณมีตาราง 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 ใช้เพื่ออธิบายการอัปเดตซอฟต์แวร์