Simptomai
Tarkime, kad kuriate skaitinį atributą "Microsoft SQL Server 2012" arba "SQL Server 2014 Master data Services" (MDS) naudodami DTS žiniatinklio tarnybą. Kai bandote įvesti daugiau skaitmenų į dešinę nuo dešimtainio skyriklio, apskaičiuojamas neteisingas tikslumas. Pvz.: kai bandote sukurti dešimtainį atributą, kuriame yra 16 skaitmenų tikslumo atlikdami:
MetadataAttribute newAttribute = new MetadataAttribute(); newAttribute.DataType = AttributeDataType.Number; newAttribute.DataTypeInformation = 16;
Sukuriamas stulpelis, turintis tinkamą 16 ir netinkamo tikslumo skalę nuo 22.
Priežastis
Problema iškyla dėl to, kad vidinė DTS Išsaugota procedūra naudoja netinkamo tikslumo skaičiavimą, kai kuriate atributą. Tikslumas apskaičiuojamas kaip 38 atėmus skalę, kuri yra neteisinga.
Sprendimas
Problema pirmą kartą buvo išspręsta šį kaupiamąjį naujinimą SQL serverio.
Kaupiamasis naujinimas 1 SQL serverio 2014 /en-us/help/2931693
Kaupiamasis naujinimas 9 SQL serverio 2012 SP1 /en-us/help/2931078
Kiekvienas naujas Kaupiamasis naujinimas, skirtas "SQL Server", yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo pridėtos prie ankstesnio kaupiamojo naujinimo. Peržiūrėkite naujausius kaupiamuosius SQL serverio naujinimus:
Sprendimas
Norėdami išspręsti šią problemą, naudokite šiuos metodus, kurie yra vertinami dėl jūsų situacijos:
-
Jei turite "SQL Server 2014", taikykite pataisą.
-
Jei naudojate "SQL Server 2012", pakeiskite saugomas procedūras, kad būtų naudojama pastovi "38" (maksimali leistina "SQL Server 2012") reikšmė, o ne atimti skalę (@DataTypeInformation ir t.t.) nuo tikslumo.
Statusą
"Microsoft" patvirtino, kad tai yra "Microsoft" produktų, išvardytų skyriuje "taikoma", problema.