KB2929832 - 修正:當您根據 SQL Server 2012 或 SQL Server 2014 MDS 中的縮放大小進行計算時,十進位精確度不正確

Applies To
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 中使用 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 產品中的問題。