KB2929832 – RJEŠENJE: preciznost broja decimalnih brojeva nije ispravna prilikom izračuna na temelju veličine skale u MDS-u SQL Server 2012 ili SQL Server 2014

Primjenjuje se na
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Simptomi

Pretpostavimo da ste numerički atribut stvorili u sustavima Microsoft SQL Server 2012 ili SQL Server 2014 Master Data Services (MDS) pomoću MDS web-servisa. Ako pokušate navesti više znamenki s desne strane decimalnog zareza, izračunava se točnost koja nije točna.

Na primjer:
Kada decimalni atribut s preciznošću od 16 znamenki pokušate stvoriti na sljedeći način:

MetadataAttribute newAttribute = new MetadataAttribute(); 
newAttribute.DataType = AttributeDataType.Number; 
newAttribute.DataTypeInformation = 16;

Stvorit će se stupac s ispravnom skalom 16 i pogrešnom preciznošću 22.

Uzrok

Problem se pojavljuje jer interna pohranjena procedura MDS-a koristi pogrešnu točnost prilikom stvaranja atributa. Preciznost se računa kao 38 minus skala, što nije točno.

Rješenje

Problem je prvi put riješen u sljedećem kumulativnom ažuriranju sustava SQL Server.

Kumulativno ažuriranje 1 za SQL Server 2014 /en-us/help/2931693

Kumulativno ažuriranje 9 za SQL Server 2012 SP1 /en-us/help/2931078

O kumulativnim ažuriranjima za SQL Server

Svako novo kumulativno ažuriranje za SQL Server sadrži sve hitne popravke i sigurnosne popravke koji su obuhvaćeni prethodnim kumulativnim ažuriranjem. Pogledajte najnovija kumulativna ažuriranja za SQL Server:

      

Zaobilazno rješenje

Da biste zaobišli problem, koristite sljedeće metode koje su korisne u vašoj situaciji:

  • Za SQL Server 2014 primijenite popravak.
  • Za SQL Server 2012 promijenite spremljene procedure tako da koriste konstantnu vrijednost 38 (maksimalno dopušteno u SQL Server 2012) umjesto da od preciznosti oduzimaju skaliranje (@DataTypeInformation itd.).

Status

Microsoft je potvrdio da je to problem u Microsoftovim proizvodima koji su navedeni u odjeljku „Odnosi se na“.