Sintomi
Si supponga di creare un attributo numerico in Microsoft SQL Server 2012 o in SQL Server 2014 Master Data Services (MDS) tramite il servizio Web MDS. Quando si prova a specificare più cifre sul lato destro di punti decimali, viene calcolata la precisione non corretta. Ad esempio, quando si tenta di creare un attributo Decimal con precisione di 16 cifre, eseguire le operazioni seguenti:
MetadataAttribute newAttribute = new MetadataAttribute(); newAttribute.DataType = AttributeDataType.Number; newAttribute.DataTypeInformation = 16;
Viene creata una colonna con la scala corretta di 16 e la precisione non corretta di 22.
Causa
Il problema si verifica perché una stored procedure interna di MDS usa il calcolo di precisione errato quando si crea l'attributo. La precisione viene calcolata come 38 meno la scala, che non è corretta.
Risoluzione
Il problema è stato risolto per la prima volta nel seguente aggiornamento cumulativo di SQL Server.
Aggiornamento cumulativo 1 per SQL Server 2014 /en-us/help/2931693
Aggiornamento cumulativo 9 per SQL Server 2012 SP1 /en-us/help/2931078
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli hotfix e tutti gli aggiornamenti della sicurezza inclusi nell'aggiornamento cumulativo precedente. Vedere gli ultimi aggiornamenti cumulativi per SQL Server:
Soluzione alternativa
Per risolvere il problema, usare i metodi seguenti apprezzati per la situazione:
-
Per SQL Server 2014, applicare la correzione.
-
Per SQL Server 2012, modificare le stored procedure in modo da usare un valore costante di 38 (max consentito da SQL Server 2012) anziché sottrarre la scala (@DataTypeInformation e così via) dalla precisione.
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".