修复︰ 从 Oracle 链接服务器的数据选择使用的 OLE DB 提供程序时数字类型的值被截断

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 3051993
症状
当您执行查询以选择从 Oracle 链接服务器的数据,通过使用 OLE DB 提供程序在 Microsoft SQL Server 2012年或 SQL Server 2014年时,数字类型列中的值可能会被截断在查询结果中。


原因
由于 Oracle 数量与非-声明类型精度/小数位数可能没有清晰的 1:1 映射到 SQL Server 数据类型,将出现此问题。在 SQL Server 2012 SP2 CU2 之前 SQL Server 将此类值映射到字符串,以确保不会丢失精度的情况。但是,,可能导致不正确的结果,如果查询所需的此类值的排序顺序。在 SQL Server 2012 SP2 CU2 映射更改为数字 38 (0) 表示形式大整数键的一些数据库架构使用数字精度/小数位数不允许的。这会导致回归时需要非整数值。
解决方案
应用此修复程序后,与未知精度/小数位数的数值被视为与 OLE DB 提供程序的双精度值。如果精度是非常重要,值的范围是不足够大,则可以将此类值视为数字 (38,10) 将开始新的跟踪标志 7314。

第一次修复该问题的SQL Server累积更新包

对于 SQL Server 2014 SP1 的累积更新 1

对于 SQL Server 2014年累积更新 8

SQL Server 2012 sp2 的累积更新 6

有关累积更新 SQL Server

SQL Server 的每个新累积更新包含所有修补程序和所有安全修补程序,已包含在以前的累积更新。为 SQL Server,请查阅最新的累积更新︰
替代方法
要变通解决此问题,请转换数从 Oracle 字段类型设置为数据类型是完全支持的 SQL Server 第一次。
状态
Microsoft 已经确认这是"适用于"一节中列出的 Microsoft 产品中的问题。

第三方信息免责声明

本文讨论的第三方产品是由与 Microsoft 无关的公司生产的。Microsoft 不做这些产品的任何担保、默示或其他有关的性能或可靠性。

属性

文章 ID:3051993 - 上次审阅时间:10/31/2016 18:27:00 - 修订版本: 3.0

Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Service Pack 1

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB3051993 KbMtzh
反馈