Simptomi
Pretpostavimo da stvarate numerički atribut u programu Microsoft SQL Server 2012 ili SQL Server 2014 Master podatkovne usluge (MDS) pomoću web-servisa MDS. Kada pokušate navesti više znamenki na desnoj strani decimalnih boda, izračunat će se netočna preciznost. Na primjer: kada pokušate stvoriti decimalni atribut s preciznošću od 16 znamenki, učinite sljedeće:
MetadataAttribute newAttribute = new MetadataAttribute(); newAttribute.DataType = AttributeDataType.Number; newAttribute.DataTypeInformation = 16;
Stvara se stupac koji sadrži odgovarajuću ljestvicu od 16 i netočnu preciznost od 22.
Uzrok
Problem se pojavljuje zato što interni MDS pohranjeni postupak koristi pogrešnu preciznost izračuna kada stvorite atribut. Preciznost se izračunava kao 38 minus skala, što nije korektno.
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
Svako novo Kumulativno ažuriranje za SQL Server sadrži sve hitne popravke i sve sigurnosne ispravke uključene u prethodno Kumulativno ažuriranje. Pogledajte najnovija kumulativna ažuriranja za SQL Server:
Zaobilazno rješenje
Da biste zaobišli taj problem, upotrijebite sljedeće metode koje ste cijenili za situaciju:
-
Za SQL Server 2014 primijenite popravak.
-
Za SQL Server 2012 promijenite spremljene postupke da biste koristili konstantnu vrijednost 38 (maksimalna dopuštena pomoću sustava SQL Server 2012) umjesto oduzimanja vage (@DataTypeInformation i tako dalje) iz preciznosti.
Status
Microsoft je potvrdio da se radi o problemu u Microsoftovim proizvodima navedenim u odjeljku "odnosi se na".