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 dos pontos decimais, a precisão incorreta é calculada.
Por exemplo:
Quando você tenta criar um atributo decimal com precisão de 16 dígitos fazendo:
MetadataAttribute newAttribute = new MetadataAttribute();
newAttribute.DataType = AttributeDataType.Number;
newAttribute.DataTypeInformation = 16;
É criada uma coluna que tem a Escala correta de 16 e a Precisão incorreta de 22.
Causa
O problema ocorre porque um procedimento armazenado interno do MDS usa o cálculo de precisão incorreto quando você cria o atributo. A precisão é calculada como 38 menos a escala, o que está incorreto.
Resolução
O problema foi corrigido pela primeira vez na atualização cumulativa seguinte do SQL Server.
Atualização cumulativa 1 para SQL Server 2014 /pt-br/help/2931693
Atualização cumulativa 9 para SQL Server 2012 SP1 /en-us/help/2931078
Sobre atualizações cumulativas para o SQL Server
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 para o SQL Server:
- Atualização cumulativa mais recente do SQL Server 2014
- Atualização cumulativa mais recente do SQL Server 2012 SP1
Solução alternativa
Para contornar o problema, use os seguintes métodos que são apreciados para sua situação:
- Para o SQL Server 2014, aplique a correção.
- Para SQL Server 2012, altere os procedimentos armazenados para usar um valor constante de 38 (máximo permitido pelo SQL Server 2012) em vez de subtrair escala (@DataTypeInformation e assim por diante) da Precisão.
Status
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".