Sintomas
Suponha que você crie um atributo numérico no Microsoft SQL Server 2012 ou no SQL Server 2014 Master Data Services (MDS) usando o serviço Web MDS. Quando você tenta especificar mais dígitos à direita de pontos decimais, a precisão incorreta é calculada. Por exemplo: quando você tenta criar um atributo decimal com precisão de 16 dígitos, fazendo o seguinte:
MetadataAttribute newAttribute = new MetadataAttribute(); newAttribute.DataType = AttributeDataType.Number; newAttribute.DataTypeInformation = 16;
Uma coluna que tem a escala correta de 16 e a precisão incorreta de 22 é criada.
Causa
O problema ocorre porque um procedimento armazenado interno MDS usa o cálculo de precisão errado quando você cria o atributo. A precisão é calculada como 38 menos a escala, o que está incorreto.
Resolução
O problema foi corrigido primeiro na atualização cumulativa a seguir do SQL Server.
Atualização cumulativa 1 para SQL Server 2014 /en-us/help/2931693
Atualização cumulativa 9 para SQL Server 2012 SP1 /en-us/help/2931078
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança incluídas na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes do SQL Server:
Solução alternativa
Para contornar o problema, use os seguintes métodos que apreciam a sua situação:
-
Para o SQL Server 2014, aplique a correção.
-
Para o SQL Server 2012, altere os procedimentos armazenados para usar um valor constante de 38 (Max permitido pelo SQL Server 2012) em vez da escala de subtração (@DataTypeInformation e assim por diante) da precisão.
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".