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