KB2929832 - REMEDIERE: Precizia zecimală este incorectă atunci când calculați pe baza dimensiunii scării în SQL Server 2012 sau SQL Server 2014 MDS

Se aplică la
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)

Simptome

Să presupunem că creați un atribut numeric în Microsoft SQL Server 2012 sau SQL Server 2014 Servicii de date coordonatoare (MDS) utilizând serviciul web MDS. Când încercați să specificați mai multe cifre în partea dreaptă a virgulelor zecimale, se calculează o precizie incorectă.

De exemplu:
Atunci când încercați să creați un atribut zecimal care are o precizie de 16 cifre, efectuând:

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

Se creează o coloană care are scala corectă de 16 și precizia incorectă de 22.

Cauză

Problema apare deoarece o procedură stocată MDS internă utilizează un calcul de precizie greșit 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ă a 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

Despre actualizările cumulative pentru SQL Server

Fiecare actualizare cumulativă nouă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu actualizarea cumulativă anterioară. Consultați cele mai recente actualizări cumulative pentru SQL Server:

      

Soluție

Pentru a evita problema, utilizați următoarele metode 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 (numărul maxim permis de SQL Server 2012) în loc de scăderea scalei (@DataTypeInformation etc.) din precizie.

Stare

Microsoft a confirmat că aceasta este o problemă în produsele Microsoft care sunt listate în secțiunea „Se aplică la”.