Príznaky
Predpokladajme, že vytvoríte číselný atribút v Microsoft SQL Server 2012 alebo SQL Server 2014 Master Data Services (MDS) pomocou webovej služby MDS. Pri pokuse o zadanie väčšieho počtu číslic na pravú stranu desatinných miest sa vypočíta nesprávna presnosť. Príklad: pri pokuse o vytvorenie desatinnej čiarky s presnosťou na 16 číslic:
MetadataAttribute newAttribute = new MetadataAttribute(); newAttribute.DataType = AttributeDataType.Number; newAttribute.DataTypeInformation = 16;
Vytvorí sa stĺpec s správnou mierkou 16 a nesprávnou presnosťou 22.
Príčina
Tento problém sa vyskytuje, pretože interná MDS uložená procedúra používa nesprávny výpočet presnosti pri vytváraní atribútu. Presnosť sa vypočíta ako 38 mínus mierka, ktorá je nesprávna.
Riešenie
Tento problém bol najskôr vyriešený v nasledujúcej kumulatívnej aktualizácii SQL servera.
Kumulatívna aktualizácia 1 pre SQL Server 2014 /en-us/help/2931693
Kumulatívna aktualizácia balíka 9 pre SQL Server 2012 SP1 /en-us/help/2931078
Každá nová Kumulatívna aktualizácia pre SQL Server obsahuje všetky rýchlych opráv a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúcej kumulatívnej aktualizácie. Pozrite si najnovšie kumulatívne aktualizácie pre SQL Server:
Alternatívne riešenie
Ak chcete problém obísť, použite tieto metódy, ktoré sú oceňované pre vašu situáciu:
-
Pre SQL Server 2014 použite opravu.
-
Ak používate SQL Server 2012, zmeňte uložené procedúry tak, aby používali konštantnú hodnotu 38 (max povolená serverom SQL Server 2012) namiesto odčítania mierky (@DataTypeInformation atď.) z presnosti.
Stav
Spoločnosť Microsoft potvrdzuje, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v tomto článku v časti Informácie v tomto článku sa týkajú nasledujúcich produktov.