KB2929832 – FIX: kümnendtäpsus on vale, kui arvutatakse skaala suuruse põhjal SQL Server 2012 või SQL Server 2014 MDS

Rakenduskoht
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)

Sümptomid

Oletagem, et loote arvuline atribuut Microsoft SQL Server 2012 või SQL Server 2014 Master Data Services (MDS) kasutades MDS veebiteenus. Kui proovite komakohtadest paremale määrata rohkem numbreid, arvutatakse vale täpsus.

Siin on mõned näited.
Kui proovite luua kümnendkoha atribuuti, mille täpsus on 16 kohta, tehke järgmist.

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

Luuakse veerg, mille õige skaala on 16 ja vale täpsus 22.

Põhjus

Probleem ilmneb, sest sisemine MDS salvestatud protseduur kasutab vale täpsuse arvutust atribuudi loomisel. Täpsus arvutatakse kui 38 miinus skaala, mis on vale.

Lahendus

Probleem lahendati esmalt järgmises SQL Server koondvärskenduses.

SQL Server 2014 koondvärskendus 1 /en-us/help/2931693

SQL Server 2012 SP1 koondvärskendus 9 /en-us/help/2931078

Teave SQL Server koondvärskenduste kohta

Iga uus koondvärskendus SQL Server sisaldab kõiki kiirparandusi ja kõiki turbeparandusi, mis olid kaasatud eelmise koondvärskenduse. Vaadake uusimaid SQL Server koondvärskendusi.

      

Ajutine lahendus

Probleemi lahendamiseks kasutage järgmisi meetodeid, mis on teie olukorra jaoks hinnatud.

  • SQL Server 2014 korral rakendage parandus.
  • Versioonis SQL Server 2012 muutke salvestatud toiminguid, et skaala (@DataTypeInformation jne) täpsusest lahutamise asemel kasutataks konstantset väärtust 38 (maksimaalne lubatud SQL Server 2012).

Olek

Microsoft on kinnitanud, et see on jaotises „Rakenduskoht“ loetletud Microsofti toodete korral esinev probleem.