Simptomi
Pretpostavimo da kreirate numerički atribut u sistemu Microsoft SQL Server 2012 ili SQL Server 2014 Master Data Services (MDS) pomoću MDS Web usluge. Kada pokušate da navedete više cifara na desnu stranu decimalnih tačaka, izračunava se netačna preciznost. Na primer: Kada pokušate da kreirate decimalni atribut koji ima preciznost od 16 cifara tako što ćete uraditi:
MetadataAttribute newAttribute = new MetadataAttribute(); newAttribute.DataType = AttributeDataType.Number; newAttribute.DataTypeInformation = 16;
Kreira se kolona koja ima ispravnu razmeru 16, a netačnu preciznost 22.
Uzrok
Do problema dolazi zato što interna MDS uskladištena procedura koristi pogrešno izračunavanje preciznosti prilikom kreiranja atributa. Preciznost se izračunava kao 38 minus na skali, što je netačno.
Rešenje
Problem je prvi put otklonjen u sledećoj kumulativnoj ispravki sistema SQL Server.
Kumulativna ispravka 1 za SQL Server 2014 /en-us/help/2931693
Kumulativna ispravka 9 za SQL Server 2012 SP1 /en-us/help/2931078
Svaka nova kumulativna ispravka za SQL Server sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodnu kumulativnu ispravku. Pogledajte najnovije kumulativne ispravke za SQL Server:
Rešenje
Da biste zaobišli problem, koristite sledeće metode koje se cene za vašu situaciju:
-
Za SQL Server 2014 primenite ispravku.
-
Za SQL Server 2012 promenite uskladištene procedure da biste koristili konstantnu vrednost 38 (max dozvoljenu od strane SQL Server 2012) umesto da oduzmete skalu (@DataTypeInformation i tako dalje) od preciznosti.
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".