Symptomy
Załóżmy, że użytkownik tworzy atrybut liczbowy w programie Microsoft SQL Server 2012 lub SQL Server 2014 Master Data Services (MDS) przy użyciu usługi sieci Web usług MDS. Podczas próby określenia większej liczby cyfr po prawej stronie punktów dziesiętnych obliczana jest niepoprawna precyzja. Na przykład: podczas próby utworzenia atrybutu dziesiętnego z dokładnością do 16 cyfr możesz wykonać następujące czynności:
MetadataAttribute newAttribute = new MetadataAttribute(); newAttribute.DataType = AttributeDataType.Number; newAttribute.DataTypeInformation = 16;
Utworzono kolumnę, która ma prawidłową skalę 16 i niepoprawną precyzją 22.
Przyczyna
Ten problem występuje, ponieważ wewnętrzna procedura składowana MDS używa niewłaściwego obliczenia precyzji podczas tworzenia atrybutu. Dokładność jest obliczana jako 38 minus Skala, która jest nieprawidłowa.
Rozwiązanie
Ten problem został po raz pierwszy rozwiązany w poniższej zbiorczej aktualizacji programu SQL Server.
Zbiorcza aktualizacja 1 dla programu SQL Server 2014 /en-us/help/2931693
Zbiorcza aktualizacja 9 dla programu SQL Server 2012 z dodatkiem SP1 /en-us/help/2931078
Każda nowa Zbiorcza aktualizacja programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji zbiorczej. Zapoznaj się z najnowszymi aktualizacjami zbiorczymi dla programu SQL Server:
Obejście
Aby obejść ten problem, Skorzystaj z następujących metod, które doceniają Twoją sytuację:
-
W przypadku programu SQL Server 2014 Zastosuj poprawkę.
-
W przypadku programu SQL Server 2012 Zmień procedury składowane, tak aby była używana stała wartość 38 (max dozwolona w programie SQL Server 2012) zamiast skali odejmowania (@DataTypeInformation itd.) od precyzji.
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".