มีวิธีที่มีประสิทธิภาพในการดูสาเหตุของ "ข้อมูลสตริงหรือไบนารีจะถูกตัดทอน" หรือไม่?


13

นี่คือการติดตามคำถามนี้ นอกจากนี้ยังเกี่ยวข้องกับคำขอคุณลักษณะนี้จาก Microsoft

อย่างไรก็ตามผ่านไปหลายปีแล้วและมีข่าวสำคัญ ๆ ออกสู่ตลาดนับตั้งแต่มีการรายงาน

คำถาม: SQL Server 2017 มีกลไกใดบ้างที่ช่วยให้ค้นหาสาเหตุที่แท้จริงของข้อผิดพลาดนี้ได้หรือไม่? หรือยากที่จะตรวจสอบเหมือนเมื่อประมาณ 9 ปีที่แล้วเมื่อมีการรายงานปัญหา


ฉันใช้เวลาอย่างน้อย 4 ชั่วโมงต่อสัปดาห์ในการแก้ไขข้อผิดพลาดเดียวและ SQL ไม่ได้อยู่ในรายละเอียดงานของฉัน
Tonny

คำตอบ:


20

ไม่มีการเปลี่ยนแปลง SQL Server 2017 ยังคงมีข้อผิดพลาดที่คลุมเครือเดียวกันและไม่มีกลไกใด ๆ ในการค้นหาแถว / คอลัมน์ที่ไม่เหมาะสม

รายการเชื่อมต่อนี้มีมากกว่า 1,600 คะแนนโหวตเมื่อยกเลิกการเชื่อมต่อ:

ความคิดเห็นล่าสุดจาก Microsoft คือสิ่งนี้:

อัปเดตล่าสุด - นักพัฒนาที่ทำงานกับมันเข้าใจความท้าทายที่เกี่ยวข้องในการสร้างการแก้ไขแบบเต็ม อาจเป็นการยากที่จะดิ่งข้อมูลเกี่ยวกับคอลัมน์ที่จำเป็นในการสร้างข้อความแสดงข้อผิดพลาดแบบเต็มลงไปยังฟังก์ชันการแปลงจริงในลักษณะที่จะไม่ส่งผลกระทบต่อการแทรกหรือปรับปรุงประสิทธิภาพ เราอาจใช้สิ่งที่ราคาถูกในระยะสั้นเช่นการบันทึกประเภทและความยาวของข้อมูลที่ถูกตัดทอน ยังเร็วเกินไปที่จะทราบว่าการแก้ไขดังกล่าวจะถึงรุ่นที่เปิดเผยต่อสาธารณะ

สิ่งที่ดีที่สุดที่ฉันสามารถแนะนำคือการลงคะแนนให้กับรายการนั้น (และแสดงความคิดเห็นโดยอธิบายถึงมูลค่าทางธุรกิจที่จะเพิ่มให้คุณ)


+1 ในการเพิ่มหนึ่งในวิธีที่ไม่มีประสิทธิภาพในการค้นหา culprint (ถ้าคุณไม่มีบันทึกแอพ) คือการใช้ profiler และ filter (โดย host / user / app / query / etc) นอกจากนี้ยังสามารถใช้ประโยชน์ได้เต็มรูปแบบ: nimblegecko.com/…
jean

3

คำอธิษฐานของเราได้รับคำตอบตามที่ระบุโดยโพสต์บล็อก MDSN :

SQL Server 2019 แนะนำข้อความใหม่พร้อมข้อมูลบริบทเพิ่มเติม

ข้อผิดพลาดควรมีความหมายมากกว่านี้ในขณะนี้:

ข่าวสารเกี่ยวกับ 2628 ระดับ 16 สถานะ 1 สตริง 14 หรือข้อมูลไบนารีจะถูกตัดทอนในตาราง 'DbName.SchemaName.TableName', คอลัมน์ 'Col' ค่าที่ตัดปลาย: '... '

นอกจากนี้ข่าวดีก็คือการเปลี่ยนแปลงนี้จะได้รับการแจ้งกลับในปี 2017 และ 2016:

ข้อความใหม่นี้ถูก backported ไปยัง SQL Server 2017 CU12 (และใน SQL Server 2016 SP2 CU ที่กำลังจะมาถึง) แต่ไม่ใช่โดยค่าเริ่มต้น คุณต้องเปิดใช้งานการตั้งค่าสถานะการสืบค้นกลับ 460 เพื่อแทนที่ ID ข้อความ 8152 ด้วย 2628 ทั้งในระดับเซสชันหรือเซิร์ฟเวอร์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.