症状
假设你使用 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 2014 的累积更新1 /en-us/help/2931693
SQL Server 2012 SP1 的累积更新9 /en-us/help/2931078
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
解决方法
若要解决此问题,请使用以下方法,感谢你的情况:
-
对于 SQL Server 2014,请应用修补程序。
-
对于 SQL Server 2012,将存储过程更改为使用常量值38(SQL Server 2012 允许的最大值),而不是从精度中减去小数位数(@DataTypeInformation 等)。
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。