Symptomer
Anta at du oppretter en numerisk attributt i Microsoft SQL Server 2012 eller SQL Server 2014 Master Data Services (MDS) ved hjelp av webtjenesten MDS. Når du prøver å angi flere sifre til høyre for desimaltegnet, beregnes feil presisjon.For eksempel:Når du prøver å opprette en desimal-attributt som har 16 sifre presisjon ved å gjøre:
MetadataAttribute newAttribute = new MetadataAttribute(); newAttribute.DataType = AttributeDataType.Number; newAttribute.DataTypeInformation = 16;
Det opprettes en kolonne som har riktig skalaen på 16 og uriktige presisjon av 22.
Årsak
Dette problemet oppstår fordi en intern MDS lagret prosedyre bruker feil presisjon beregning når du oppretter attributtet. Presisjonen er beregnet som 38 minus skalaen, som er feil.
Oppløsning
Problemet ble først løst i den følgende kumulative oppdateringen av SQL Server.
Samleoppdatering 1 for SQLServer-2014/en-us/help/2931693
Kumulativ oppdatering 9 for SQL Server 2012 SP1/en-us/help/2931078
Hver nye kumulative oppdateringen for SQL Server inneholder alle hurtigreparasjonene og alle sikkerhetsreparasjoner som fulgte med den forrige kumulative oppdateringen. Sjekk ut de nyeste kumulative oppdateringene for SQL Server:
Løsningen
Du kan omgå problemet ved å bruke følgende metoder som vi setter pris for din situasjon:
-
For SQL Server-2014, kan du bruke reparasjonen.
-
Endre de lagrede prosedyrene for å bruke en konstant verdi på 38 (maks tillatt av SQL Server 2012) i stedet for Trekk fra skalaen (@DataTypeInformation og så videre) fra presisjonen for SQL Server 2012.
Status
Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".