症狀
假設您在 Microsoft SQL Server 2012 或 SQL Server 2014 中使用 MDS Web 服務建立 MDS) Master Data Services (數值屬性。 當您嘗試在小數點右側指定更多位數時,計算出不正確的精確度。
例如:
當您嘗試建立具有 16 位數精確度的十進位屬性時,請執行下列動作:
MetadataAttribute newAttribute = new MetadataAttribute();
newAttribute.DataType = AttributeDataType.Number;
newAttribute.DataTypeInformation = 16;
隨即會建立具有正確縮放比例 16 和錯誤精確度 22 的欄。
原因
發生此問題是因為當您建立屬性時,內部 MDS 預存程序使用錯誤的精確度計算。 精確度計算為 38 減去刻度,這是不正確的。
解決方式
此問題已先在下列 SQL Server 累積更新中修正。
SQL Server 2014 累積更新 1 /zh-tw/help/2931693
SQL Server 2012 SP1 的累積更新 9 /en-us/help/2931078
關於 SQL Server 的累積更新
SQL Server 的每個新累積更新都包含所有 Hotfix 和先前累積更新的所有安全性修正程式。 查看 SQL Server 的最新累積更新:
因應措施
若要解決此問題,請使用下列適合您情況的方法:
- 針對 SQL Server 2014,請套用修正程式。
- 針對 SQL Server 2012,請將預存程序變更為使用 SQL Server 2012) 所允許的最大值 38,而不是從精確度中減去縮放 # (A2@DataTypeInformation 等) 的常數值。
狀態
Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。