Symptomer
Antag, at du opretter en numerisk attribut i Microsoft SQL Server 2012 eller SQL Server 2014 Master Data Services (MDS) ved hjælp af MDS-webtjenesten. Når du forsøger at angive flere cifre til højre for decimaltegn, beregnes den forkerte præcision.
Det kunne f.eks. være:
Når du forsøger at oprette en decimalattribut med en præcision på 16 cifre ved at gøre følgende:
MetadataAttribute newAttribute = new MetadataAttribute();
newAttribute.DataType = AttributeDataType.Number;
newAttribute.DataTypeInformation = 16;
Der oprettes en kolonne med den korrekte skala på 16 og den forkerte præcision på 22.
Årsag
Problemet opstår, fordi en intern MDS-gemt procedure bruger den forkerte præcisionsberegning, når du opretter attributten. Præcisionen beregnes som 38 minus skalaen, hvilket er forkert.
Løsning
Problemet blev først løst i følgende kumulative opdatering af SQL Server.
Samlet opdatering 1 til SQL Server 2014 /en-us/help/2931693
Samlet opdatering 9 til SQL Server 2012 SP1 /en-us/help/2931078
Om kumulative opdateringer til SQL Server
Hver ny kumulativ opdatering til SQL Server indeholder alle de hotfixes og alle de sikkerhedsrettelser, der fulgte med den forrige kumulative opdatering. Se de seneste kumulative opdateringer til SQL Server:
- Seneste kumulative opdatering til SQL Server 2014
- Seneste kumulative opdatering til SQL Server 2012 SP1
Løsning
Du kan løse problemet ved at bruge følgende metoder, der er værdsat for din situation:
- Anvend rettelsen for SQL Server 2014.
- I SQL Server 2012 skal du ændre de gemte procedurer til at bruge en konstant værdi på 38 (maksimalt tilladt i SQL Server 2012) i stedet for at subtrahere skala (@DataTypeInformation osv.) fra præcisionen.
Status
Microsoft har bekræftet, at dette er et problem i de Microsoft-produkter, der er angivet i afsnittet "Gælder for".