อาการ
เมื่อคุณเรียกใช้แบบสอบถามเพื่อเลือกข้อมูลจากเซิร์ฟเวอร์ที่เชื่อมโยงกับ Oracle โดยใช้ผู้ให้บริการ OLE DB ใน Microsoft SQL Server ๒๐๑๒หรือ SQL Server ๒๐๑๔ค่าในคอลัมน์ชนิดหมายเลขอาจถูกตัดทอนในผลลัพธ์ของคิวรี
สาเหตุ
ปัญหานี้เกิดขึ้นเนื่องจากชนิดตัวเลข Oracle ที่มีความแม่นยำ/มาตราส่วนที่ไม่ได้ประกาศอาจไม่มีการแมป1:1 ที่ชัดเจนไปยังชนิดข้อมูล SQL Server ก่อนที่ CU2 SQL Server ๒๐๑๒ SP2 CU2, SQL Server maps ค่าดังกล่าวไปยังสตริงในการตรวจสอบให้แน่ใจว่าไม่มีการสูญเสียความแม่นยำที่เกิดขึ้น อย่างไรก็ตามที่อาจนำไปสู่ผลลัพธ์ที่ไม่ถูกต้องถ้าคิวรีที่จำเป็นต้องมีการเรียงลำดับบนค่าดังกล่าว ในการ CU2 SQL Server ๒๐๑๒ SP2 การแมปจะถูกเปลี่ยนเป็นตัวเลข (๓๘, 0) เพื่ออนุญาตให้มีคีย์จำนวนเต็มขนาดใหญ่ที่ schema ของฐานข้อมูลบางส่วนใช้ตัวเลขโดยไม่มีความแม่นยำ/มาตราส่วนสำหรับ สิ่งนี้จะนำไปสู่ regressions เมื่อต้องการค่าที่ไม่ใช่จำนวนเต็ม
การแก้ไข
หลังจากที่คุณนำการแก้ไขนี้ไปใช้แล้วค่าตัวเลขที่มีความแม่นยำ/มาตราส่วนที่ไม่รู้จักจะถือว่าเป็นค่าคู่กับผู้ให้บริการ OLE DB ถ้าความแม่นยำมีความสำคัญและช่วงของค่าไม่มีขนาดใหญ่พอคุณสามารถเปิดใช้งานแฟล็กการติดตามใหม่๗๓๑๔ที่จะเริ่มต้นการรักษาค่าดังกล่าวเป็นตัวเลข (๓๘, 10)
ปัญหานี้ได้รับการแก้ไขแล้วในการอัปเดตที่สะสมของ SQL Server ครั้งแรก
การอัปเดตที่สะสม1สำหรับ SQL Server ๒๐๑๔ SP1 /en-us/help/3067839
การอัปเดตที่สะสม8สำหรับ SQL Server ๒๐๑๔ /en-us/help/3067836
การอัปเดตที่สะสม6สำหรับ SQL Server ๒๐๑๒ SP2 /en-us/help/3052468
การอัปเดตที่สะสมใหม่แต่ละรายการสำหรับ SQL Server ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมดและการแก้ไขการรักษาความปลอดภัยทั้งหมดที่รวมอยู่ในการอัปเดตที่สะสมก่อนหน้านี้ ตรวจสอบการอัปเดตที่สะสมล่าสุดสำหรับ SQL Server:
วิธีแก้ไขปัญหาชั่วคราว
เมื่อต้องการแก้ไขปัญหานี้ให้แปลงเขตข้อมูล Oracle จากชนิดตัวเลขเป็นชนิดข้อมูลที่ได้รับการสนับสนุนอย่างสมบูรณ์โดย SQL Server ก่อน
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"
ผลิตภัณฑ์ของบริษัทอื่นที่มีการกล่าวถึงในบทความนี้ ผลิตโดยบริษัทต่างๆ ที่ไม่เกี่ยวข้องกับ Microsoft Microsoft ไม่รับประกัน ทั้งโดยนัยหรืออย่างอื่นใด เกี่ยวกับประสิทธิภาพหรือความน่าเชื่อถือของผลิตภัณฑ์เหล่านี้