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