Sümptomid
Oletagem, et luua Microsoft SQL Server 2012 või SQL Server 2014 Master Data Services (MDS) numbriline atribuut MDS veebiteenuse abil. Kui proovite määrata kümnendkohtade paremale poolele rohkem numbreid, arvutatakse vale täpsus. Näiteks: kui proovite luua kümnendkoha atribuuti, millel on 16-kohaline täpsus, tehke järgmist.
MetadataAttribute newAttribute = new MetadataAttribute(); newAttribute.DataType = AttributeDataType.Number; newAttribute.DataTypeInformation = 16;
Luuakse veerg, mille suurus on 16 ja vale täpsusega 22.
Põhjus
See probleem ilmneb seetõttu, et sisemine MDS salvestatud protseduur kasutab atribuudi loomisel vale täpsuse arvutust. Täpsus arvutatakse 38 miinusega, mis on vale.
Lahendus
Probleem parandati esmakordselt SQL serveri järgmises koondvärskenduses.
Kumulatiivne Update 1 SQL Server 2014 /en-us/help/2931693
Kumulatiivne Update 9 SQL Server 2012 SP1 jaoks /en-us/help/2931078
Iga uus koondvärskenduses SQL Server sisaldab kõiki käigultparandused ja kõik turvaparandusi, mis kuulusid eelmise koondvärskenduse. Vaadake SQL serveri kumulatiivseid värskendusi.
Lahendus
Probleemi lahendamiseks kasutage järgmisi meetodeid, mida teie olukorras hinnatakse.
-
SQL Server 2014 korral rakendage parandus.
-
SQL Server 2012 korral muutke salvestatud protseduurid, et kasutada konstantide arvust 38 (max lubatud SQL Server 2012), selle asemel et lahutada skaalat (@DataTypeInformation jne).
Olek
Microsoft on kinnitanud, et see probleem esineb jaotises "kehtib järgmiste toodete kohta" loetletud Microsofti toodetes.