นำไปใช้กับ
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

อาการ

สมมติว่าคุณใช้โปรแกรมควบคุม sqlncli11 ODBC ในการเข้าถึง Microsoft SQL Server ๒๐๑๒หรือ SQL Server ๒๐๑๔ในแอปพลิเคชัน เมื่อคุณใช้เคอร์เซอร์ของเซิร์ฟเวอร์และฟังก์ชัน SQLFetch/ SQLGetData เพื่อเข้าถึงข้อมูลบางอย่างของวัตถุที่มีขนาดใหญ่ไบนารี (BLOB) ใน SQL server ปัญหาประสิทธิภาพการทำงานจะเกิดขึ้นโดยเฉพาะอย่างยิ่งสำหรับชนิดข้อมูลขนาดใหญ่เช่น varbinary (max) หรือ varchar (max)

สาเหตุ

นี่คือปัญหาการออกแบบสำหรับการใช้ฟังก์ชัน SQLFetch/ SQLGetData ในโปรแกรมควบคุม ODBC ของ SQL Server ๒๐๑๒ เมื่อคิวรีใช้เคอร์เซอร์เซิร์ฟเวอร์ใดๆโปรแกรมควบคุม ODBC เรียก sp_cursorfetch ระหว่างการดำเนินการ SQLFetch และเซิร์ฟเวอร์จะส่ง BLOB ทั้งหมดไปยังไคลเอ็นต์ จากนั้นเมื่อมีการดำเนินการ SQLGetDataSP_CURSOR จะนำ BLOB ทั้งหมดอีกครั้ง การทำเช่นนี้จะส่งผลต่อประสิทธิภาพการทำงานสำหรับชนิดข้อมูลขนาดใหญ่เช่น varbinary (max) หรือ varchar (max)

การแก้ไข

ข้อมูลการอัปเดตที่สะสม

Sp_cursoroptionการดำเนินการใหม่เรียกเพื่อขอรับ TEXTPTR_ONLY ก่อนที่sp_cursorfetchแล้วเรียกsp_cursoroptionเพื่อนำกลับไปยัง TEXTDATA ก่อนsp_cursor การทำเช่นนี้สามารถปรับปรุงประสิทธิภาพการทำงานได้ ปัญหานี้ได้รับการแก้ไขแล้วในการอัปเดตที่สะสมของ SQL Server ครั้งแรก

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

สถานะ

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

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

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

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