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:
- Cea mai recentă actualizare cumulativă pentru SQL Server 2014
- Cea mai recentă actualizare cumulativă pentru SQL Server 2012 SP1
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”.