Příznaky
Předpokládejme, že v Microsoft SQL Server 2012 nebo SQL Server 2014 Master Data Services (MDS) vytvoříte číselný atribut pomocí webové služby MDS. Pokud se pokusíte zadat více číslic napravo od desetinné čárky, bude vypočítána nesprávná přesnost.
Příklady:
Když se pokoušíte vytvořit atribut decimal s přesností na 16 číslic, postupujte následovně:
MetadataAttribute newAttribute = new MetadataAttribute();
newAttribute.DataType = AttributeDataType.Number;
newAttribute.DataTypeInformation = 16;
Vytvoří se sloupec se správným měřítkem 16 a nesprávnou přesností 22.
Příčina
K tomuto problému dochází, protože interní uložená procedura MDS používá při vytváření atributu nesprávný výpočet přesnosti. Přesnost se vypočítá jako 38 minus stupnice, což není správně.
Řešení
Tento problém byl poprvé opraven v následující kumulativní aktualizaci SQL Server.
Kumulativní aktualizace 1 pro SQL Server 2014 /en-us/help/2931693
Kumulativní aktualizace 9 pro SQL Server 2012 SP1 /en-us/help/2931078
Informace o kumulativních aktualizacích pro SQL Server
Každá nová kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí kumulativní aktualizace. Podívejte se na nejnovější kumulativní aktualizace pro SQL Server:
- Nejnovější kumulativní aktualizace pro SQL Server 2014
- Nejnovější kumulativní aktualizace pro SQL Server 2012 SP1
Alternativní řešení
Problém vyřešíte pomocí následujících metod, které můžete pro vaši situaci ocenit:
- Pro SQL Server 2014 použijte opravu.
- Pro SQL Server 2012 změňte uložené procedury tak, aby používaly konstantu 38 (maximum povolenou SQL Server 2012) místo odečítání měřítka (@DataTypeInformation atd.) od přesnosti.
Stav
Společnost Microsoft potvrdila, že se jedná o problém produktů Microsoft, které jsou uvedeny v sekci Platí pro.