Síntomas
Suponga que crea un atributo numérico en Microsoft SQL Server 2012 o SQL Server 2014 Master Data Services (MDS) con el servicio Web de MDS. Cuando intenta especificar más dígitos al lado derecho de las posiciones decimales, se calcula la precisión incorrecta. Por ejemplo: cuando intenta crear un atributo decimal con una precisión de 16 dígitos, haga lo siguiente:
MetadataAttribute newAttribute = new MetadataAttribute(); newAttribute.DataType = AttributeDataType.Number; newAttribute.DataTypeInformation = 16;
Se crea una columna con la escala correcta de 16 y una precisión incorrecta de 22.
Causa
El problema se produce porque un procedimiento almacenado de MDS interno usa un cálculo de precisión incorrecto al crear el atributo. La precisión se calcula como 38 menos la escala, lo cual es incorrecto.
Resolución
El problema se solucionó por primera vez en la siguiente actualización acumulativa de SQL Server.
Actualización acumulativa 1 para SQL Server 2014 /en-us/help/2931693
Actualización acumulativa 9 para SQL Server 2012 SP1 /en-us/help/2931078
Cada actualización acumulativa para SQL Server contiene todas las revisiones y todas las revisiones de seguridad incluidas en la actualización acumulativa anterior. Consulte las últimas actualizaciones acumulativas para SQL Server:
Solución alternativa
Para solucionar el problema, utilice los siguientes métodos que agradecemos de su situación:
-
Para SQL Server 2014, aplique la corrección.
-
Para SQL Server 2012, cambie los procedimientos almacenados para usar un valor constante de 38 (permitido por SQL Server 2012) en lugar de restar escala (@DataTypeInformation, etc.) a partir de la precisión.
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft recogidos en la sección "Se aplica a".