Symptom
Anta att du skapar ett numeriskt attribut i Microsoft SQL Server 2012 eller SQL Server 2014 Master Data Services (MDS) med hjälp av MDS web service. När du försöker ange fler siffror till höger om decimal tecken beräknas den felaktiga precisionen. Exempel: när du försöker skapa ett decimal-attribut med 16 siffror precision:
MetadataAttribute newAttribute = new MetadataAttribute(); newAttribute.DataType = AttributeDataType.Number; newAttribute.DataTypeInformation = 16;
En kolumn skapas med korrekt skala på 16 och felaktig precision 22.
Orsak
Problemet beror på att en intern MDS-lagrad procedur använder fel precisions beräkning när du skapar attributet. Precisionen beräknas som 38 minus skalan, som är felaktig.
Lösning
Problemet är först åtgärdat i den kumulativa uppdateringen av SQL Server.
Kumulativ uppdatering 1 för SQL Server 2014 /en-us/help/2931693
Kumulativ uppdatering 9 för SQL Server 2012 SP1 /en-us/help/2931078
Varje ny kumulativ uppdatering för SQL Server innehåller alla snabb korrigeringar och alla säkerhets korrigeringar som ingick i den föregående kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:
Lösning
Undvik problemet genom att använda följande metoder som är tacksam för din situation:
-
För SQL Server 2014, tillämpa korrigeringen.
-
För SQL Server 2012 kan du ändra lagrade procedurer för att använda ett konstant värde på 38 (max tillåtet i SQL Server 2012) i stället för att subtrahera skala (@DataTypeInformation och så vidare) från precisionen.
Status
Microsoft har bekräftat att det här är ett problem i Microsoft-produkterna som nämns i "gäller".