อาการ
พิจารณาสถานการณ์ต่อไปนี้:
-
คุณมีเซิร์ฟเวอร์ที่ลิงก์ใน Microsoft SQL Server 2008 R2
-
มีตารางบนเซิร์ฟเวอร์ที่ลิงก์ที่มีคอลัมน์ชนิด SMALLDATETIME
-
คุณเรียกใช้คําสั่ง INSERT หรือ INSERT INTO เพื่อแทรกระเบียนที่มีข้อมูลชนิด DATETIME ลงในตาราง
ในสถานการณ์สมมตินี้ คําสั่งล้มเหลว นอกจากนี้ คุณได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:
ตัวให้บริการ OLE DB "SQLNCLI10" สําหรับเซิร์ฟเวอร์ที่ลิงก์ "LinkServerName " ข้อความที่ส่งกลับ "การดําเนินการ OLE DB แบบหลายขั้นตอนสร้างข้อผิดพลาด ตรวจสอบแต่ละค่าสถานะ OLE DB ถ้ามี ไม่มีการทํางาน"Msg 7344, ระดับ 16, สถานะ 1, บรรทัด 1 ตัวให้บริการ OLE DB "SQLNCLI10" สําหรับเซิร์ฟเวอร์ที่ลิงก์ "LinkServerName" ไม่สามารถแทรกลงในตาราง "ชื่อตาราง" เนื่องจากคอลัมน์ "ColumnName" การแปลงล้มเหลวเนื่องจากค่าข้อมูลเกินชนิดข้อมูลที่ตัวให้บริการใช้
สาเหตุ
ปัญหานี้เกิดขึ้นเนื่องจากปัญหาการแมปชนิดข้อมูลใน SQL Server
การแก้ไข
ข้อมูลโปรแกรมอัปเดตสะสม
SQL Server 2008 R2 Service Pack 2
การแก้ไขสําหรับปัญหานี้ถูกนําออกใช้ครั้งแรกในการอัปเดตสะสม 3 สําหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการขอรับแพคเกจโปรแกรมปรับปรุงสะสมสําหรับ SQL Server 2008 R2 Service Pack 2 ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความใน Microsoft Knowledge Base:
2754552 แพคเกจการอัปเดตสะสม 3 สําหรับ SQL Server 2008 R2 Service Pack 2Note เนื่องจากรุ่นเป็นแบบสะสม แต่ละการเผยแพร่การแก้ไขใหม่จะประกอบด้วยการแก้ไขด่วนทั้งหมดและการแก้ไขข้อบกพร่องด้านความปลอดภัยทั้งหมดที่รวมอยู่กับ SQL Server การเผยแพร่การแก้ไข 2008 R2 Service Pack 2 ก่อนหน้า เราขอแนะนําให้คุณพิจารณาใช้การแก้ไขรุ่นล่าสุดที่ประกอบด้วยโปรแกรมแก้ไขด่วนนี้ สำหรับข้อมูลเพิ่มเติม โปรดคลิกที่หมายเลขบทความต่อไปนี้เพื่อดูบทความใน Microsoft Knowledge Base:
2730301 รุ่น SQL Server 2008 R2 ที่เผยแพร่หลังจากเผยแพร่ SQL Server 2008 R2 Service Pack 2
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"
วิธีแก้ไขปัญหาชั่วคราว
เมื่อต้องการแก้ไขปัญหานี้ ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้:
-
แคสต์ข้อมูลชนิด DATETIME ไปยังชนิด SMALLDATETIME ในคําสั่ง
-
เปลี่ยนคอลัมน์ชนิด SMALLDATETIME เป็นชนิด DATETIME บนเซิร์ฟเวอร์ที่ลิงก์