Simptome
Să presupunem că creați un atribut numeric în Microsoft SQL Server 2012 sau SQL Server 2014 Master Data Services (MDS) utilizând serviciul Web MDS. Atunci când încercați să specificați mai multe cifre în partea dreaptă a punctelor zecimale, se calculează precizia incorectă. De exemplu: atunci când încercați să creați un atribut zecimal care are o precizie de 16 cifre:
MetadataAttribute newAttribute = new MetadataAttribute(); newAttribute.DataType = AttributeDataType.Number; newAttribute.DataTypeInformation = 16;
Se creează o coloană care are Scala corectă de 16 și precizie incorectă de 22.
Cauză
Problema apare deoarece o procedură internă de MDS stocată utilizează un calcul de precizie incorect atunci când creați atributul. Precizia este calculată ca 38 minus Scala, ceea ce este incorect.
Rezolvare
Problema a fost remediată pentru prima dată în următoarea actualizare cumulativă de SQL Server.
Actualizarea cumulativă 1 pentru SQL Server 2014 /en-us/help/2931693
Actualizarea cumulativă 9 pentru SQL Server 2012 SP1 /en-us/help/2931078
Fiecare nouă actualizare cumulativă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în actualizarea cumulativă anterioară. Consultați cele mai recente actualizări cumulative pentru SQL Server:
Soluție de evitare
Pentru a rezolva problema, utilizați următoarele metode care sunt apreciate pentru situația dvs.:
-
Pentru SQL Server 2014, aplicați remedierea.
-
Pentru SQL Server 2012, modificați procedurile stocate pentru a utiliza o valoare constantă de 38 (Max permisă de SQL Server 2012) în loc să scădeți Scala (@DataTypeInformation etc.) din precizie.
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.