应用对象
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)

症状

当使用 Microsoft SQL Server 2012 或 SQL Server 2014 中的 OLE DB 访问接口从 Oracle 链接服务器中执行查询以选择数据时,查询结果中的 "数字类型" 列中的值可能会被截断。

原因

出现此问题的原因是,具有非声明精度/小数位数的 Oracle 数字类型可能不会将明文1:1 映射到 SQL Server 数据类型。 在 SQL Server 2012 SP2 CU2 之前,SQL Server 将此类值映射到字符串,以确保不会发生精度损失。 但是,如果查询所需的排序顺序在此类值上,这可能会导致不正确的结果。 在 SQL Server 2012 SP2 CU2 中,将映射更改为数字(38,0),以允许对某些数据库架构使用数字而不是精度/小数位数的大整数键的表示形式。 这会在需要非整数值时导致回归。

SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:

解决方法

若要解决此问题,请将 Oracle 字段从 NUMBER 类型转换为 SQL Server 首先完全支持的数据类型。

状态

Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。

本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 对于这些产品的性能或可靠性,Microsoft 不做任何暗示保证或其他形式的保证。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。