การแก้ไข: ข้อความแสดงข้อผิดพลาดเมื่อคุณเรียกใช้แอปพลิเคชันที่ใช้ SQL Server 2008 ที่เรียกใช้ฟังก์ชัน SQLBindParameter: "สตรีมโพรโทคอลการเรียกกระบวนการระยะไกล (RPC) สตรีมข้อมูลแบบตาราง (TDS) ขาเข้าไม่ถูกต้อง"

Microsoft แจกจ่ายการแก้ไข Microsoft SQL Server 2008 เป็นไฟล์เดียวที่สามารถดาวน์โหลดได้ เนื่องจากการแก้ไขเป็นแบบสะสม การเผยแพร่ใหม่แต่ละรายการจะมีโปรแกรมแก้ไขด่วนและการแก้ไขข้อบกพร่องด้านความปลอดภัยทั้งหมดที่รวมอยู่ในการแก้ไข SQL Server 2008 รุ่นก่อนหน้า

อาการ

ในแอปพลิเคชัน คุณใช้โปรแกรมควบคุม SQL Server 2008 Native Client คุณเรียกใช้ฟังก์ชัน SQLBindParameter เพื่อผูกพารามิเตอร์ของชนิดข้อมูลอักขระกว้างสําหรับคิวรี ตัวอย่างเช่น คุณผูกพารามิเตอร์ของชนิดข้อมูล NCHAR หรือชนิดข้อมูล NVARCHAR แอปพลิเคชันจะส่งผ่านค่าที่มากกว่า 4,000 ไปยังพารามิเตอร์ ColumnSize ของฟังก์ชัน SQLBindParameter เมื่อคุณเรียกใช้คิวรีในแอปพลิเคชัน คุณจะได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:

หมายเหตุ

สตรีมโพรโทคอลการเรียกกระบวนการระยะไกล (RPC) ของสตรีมข้อมูลตาราง (TDS) ขาเข้าไม่ถูกต้อง พารามิเตอร์ 1 (""): ชนิดข้อมูล 0xE7 มีความยาวข้อมูลหรือความยาวเมตาดาต้าไม่ถูกต้อง

หมายเหตุ ข้อความแสดงข้อผิดพลาดนี้เป็นข้อความแสดงข้อผิดพลาดทางฝั่งเซิร์ฟเวอร์ ถ้าแอปพลิเคชันใช้โปรแกรมควบคุม SQL Server 2005 Native Client แทน คุณจะได้รับข้อความแสดงข้อผิดพลาดฝั่งไคลเอ็นต์ต่อไปนี้ตามที่คาดไว้:

หมายเหตุ

[ไมโครซอฟท์][SQL Native Client]ค่าความแม่นยําไม่ถูกต้อง

สาเหตุ

ปัญหานี้เกิดขึ้นเนื่องจากโปรแกรมควบคุม SQL Server 2008 Native Client ไม่ทําการตรวจสอบรันไทม์ของขนาดคอลัมน์ที่ป้อนสําหรับฟังก์ชัน SQLBindParameter นอกจากนี้ โปรแกรมควบคุมจะเพิ่มขนาดคอลัมน์เป็นสองเท่า ถ้าขนาดคอลัมน์อินพุตมากกว่า 4,000 และพารามิเตอร์เป็นชนิดข้อมูลอักขระแบบกว้าง ดังนั้น SQL Server จะส่งกลับข้อผิดพลาดทางฝั่งเซิร์ฟเวอร์ที่พารามิเตอร์เกินขีดจํากัดสูงสุด (8,000)

หมายเหตุ: โปรแกรมควบคุม SQL Server 2005 Native Client จะทําการตรวจสอบรันไทม์สําหรับขนาดคอลัมน์ที่ป้อน ดังนั้น ถ้าขนาดคอลัมน์นําเข้ามากกว่า 8,000 โปรแกรมควบคุม SQL Server 2005 Native Client จะส่งกลับข้อผิดพลาดทางฝั่งไคลเอ็นต์

การแก้ปัญหา

การแก้ไขปัญหานี้เปิดตัวครั้งแรกใน Cumulative Update 3 สําหรับ SQL Server 2008 Service Pack 1 สําหรับข้อมูลเพิ่มเติมเกี่ยวกับแพคเกจโปรแกรมปรับปรุงสะสมนี้ ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

971491 แพคเกจการปรับปรุงสะสม 3 สําหรับ SQL Server 2008 Service Pack 1 หมายเหตุ เนื่องจากรุ่นนี้เป็นแบบสะสม การแก้ไขใหม่ๆ ที่เผยแพร่ใหม่แต่ละรายการจะมีโปรแกรมแก้ไขด่วนและการแก้ไขข้อบกพร่องด้านความปลอดภัยทั้งหมดที่รวมอยู่ในการแก้ไข SQL Server 2008 รุ่นก่อนหน้า Microsoft ขอแนะนําให้คุณพิจารณาใช้การแก้ไขล่าสุดที่ประกอบด้วยโปรแกรมแก้ไขด่วนนี้ สําหรับข้อมูลเพิ่มเติม โปรดคลิกที่หมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

970365 รุ่น SQL Server 2008 ที่วางจําหน่ายภายหลัง SQL Server 2008 Service Pack 1
โปรแกรมแก้ไขด่วนของ Microsoft SQL Server 2008 ถูกสร้างขึ้นสําหรับ SQL Server Service Pack เฉพาะ คุณต้องใช้โปรแกรมแก้ไขด่วนของ SQL Server 2008 Service Pack 1 กับการติดตั้ง SQL Server 2008 Service Pack 1 ตามค่าเริ่มต้น โปรแกรมแก้ไขด่วนใดๆ ที่มีอยู่ใน Service Pack ของ SQL Server จะรวมอยู่ใน SQL Server Service Pack รุ่นถัดไป

สถานะ

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

การอ้างอิง

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

935897 แบบจําลองการให้บริการที่เพื่มขึ้นมีไว้ให้สําหรับทีมงาน SQL Server เพื่อจัดเตรียมโปรแกรมแก้ไขสําหรับปัญหาที่มีการรายงาน

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการตั้งชื่อ Schema สําหรับการอัปเดต SQL Server ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

822499 รูปแบบการตั้งชื่อใหม่สําหรับแพคเกจอัปเดตซอฟต์แวร์ Microsoft SQL Server

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับคําศัพท์ของการปรับปรุงซอฟต์แวร์ ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:

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