Симптоми
Приемете, че създавате цифров атрибут в Microsoft SQL Server 2012 или SQL Server 2014 Master Data Services (МДС), като използвате уеб услугата МДС. Когато се опитате да зададете повече цифри от дясната страна на десетичните знаци, се изчислява неправилна точност. Например: когато се опитвате да създадете десетично число, което има 16 цифри точност по следния начин:
MetadataAttribute newAttribute = new MetadataAttribute(); newAttribute.DataType = AttributeDataType.Number; newAttribute.DataTypeInformation = 16;
Създадена е колона, която има правилната скала от 16 и неправилна точност от 22.
Причина
Проблемът възниква, тъй като вътрешно съхранена процедура на МДС използва грешното изчисление на точността, когато създавате атрибута. Точността се изчислява като 38 минус мащаба, което е невярно.
Решение
Проблемът е коригиран първо в следващата сборна актуализация на SQL Server.
Сборна актуализация 1 за SQL Server 2014 /en-us/help/2931693
Кумулативна актуализация 9 за SQL Server 2012 SP1 /en-us/help/2931078
Всяка нова сборна актуализация за SQL Server съдържа всички поправки и всички корекции на защитата, които са били включени в предишната сборна актуализация. Вижте последните сборни актуализации за SQL Server:
Заобиколно решение
За да заобиколите проблема, използвайте методите по-долу, които са оценени за вашата ситуация:
-
За SQL Server 2014 приложете корекцията.
-
За SQL Server 2012 променете съхранените процедури, за да използвате константна стойност на 38 (Max, позволена от SQL Server 2012), вместо да изваждате скала (@DataTypeInformation и т. н.) от точността.
Състоянието
Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са посочени в секцията "важи за".