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

症状

假设你使用 MDS Web 服务在 Microsoft SQL Server 2012 或 SQL Server 2014 Master Data Services (MDS)中创建数字属性。 当你尝试为小数点右侧指定更多位数时,将计算不正确的精度。 例如:当你尝试创建具有16位精度的 decimal 属性时,请执行以下操作:

MetadataAttribute newAttribute = new MetadataAttribute(); newAttribute.DataType = AttributeDataType.Number; newAttribute.DataTypeInformation = 16;

创建的列的小数位数正确,精度为16,精度为不正确。

原因

出现此问题的原因是,内部 MDS 存储过程在创建属性时使用了错误的精度计算。 精度的计算公式为38减比例,这是不正确的。

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

解决方法

若要解决此问题,请使用以下方法,感谢你的情况:

  • 对于 SQL Server 2014,请应用修补程序。

  • 对于 SQL Server 2012,将存储过程更改为使用常量值38(SQL Server 2012 允许的最大值),而不是从精度中减去小数位数(@DataTypeInformation 等)。

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

需要更多帮助?

需要更多选项?

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