Συμπτώματα
Ας υποθέσουμε ότι δημιουργείτε ένα αριθμητικό χαρακτηριστικό στον Microsoft SQL Server 2012 ή στον SQL Server 2014 κύριων υπηρεσιών δεδομένων (MDS), χρησιμοποιώντας την υπηρεσία Web του MDS. Όταν προσπαθείτε να καθορίσετε περισσότερα ψηφία στη δεξιά πλευρά των δεκαδικών ψηφίων, υπολογίζεται η εσφαλμένη ακρίβεια. Για παράδειγμα: όταν προσπαθείτε να δημιουργήσετε ένα χαρακτηριστικό δεκαδικών ψηφίων με ακρίβεια 16 ψηφίων, κάνοντας τα εξής:
MetadataAttribute newAttribute = new MetadataAttribute(); newAttribute.DataType = AttributeDataType.Number; newAttribute.DataTypeInformation = 16;
Δημιουργείται μια στήλη που έχει τη σωστή κλίμακα 16 και εσφαλμένη ακρίβεια 22.
Αιτία
Το πρόβλημα παρουσιάζεται επειδή μια εσωτερική αποθηκευμένη διαδικασία MDS χρησιμοποιεί εσφαλμένο υπολογισμό ακρίβειας όταν δημιουργείτε το χαρακτηριστικό. Η ακρίβεια υπολογίζεται ως 38 μείον την κλίμακα, η οποία είναι εσφαλμένη.
Επίλυση
Το πρόβλημα διορθώθηκε για πρώτη φορά με την ακόλουθη αθροιστική ενημέρωση του SQL Server.
Αθροιστική ενημερωμένη έκδοση 1 για τον SQL Server 2014 /en-us/help/2931693
Αθροιστική ενημερωμένη έκδοση 9 για SQL Server 2012 SP1 /en-us/help/2931078
Κάθε νέα αθροιστική ενημέρωση για τον SQL Server περιέχει όλες τις επείγουσες επιδιορθώσεις και όλες τις επιδιορθώσεις ασφαλείας που συμπεριλήφθηκαν στην προηγούμενη αθροιστική ενημέρωση. Ανάληψη ελέγχου των πιο πρόσφατων αθροιστικών ενημερώσεων για τον SQL Server:
Λύση
Για να επιλύσετε αυτό το ζήτημα, χρησιμοποιήστε τις ακόλουθες μεθόδους που εκτιμώνται για την περίπτωσή σας:
-
Για τον SQL Server 2014, εφαρμόστε την επιδιόρθωση.
-
Για τον SQL Server 2012, αλλάξτε τις αποθηκευμένες διαδικασίες για να χρησιμοποιήσετε μια σταθερή τιμή 38 (Max που επιτρέπεται από τον SQL Server 2012) αντί να αφαιρέσετε την κλίμακα (@DataTypeInformation και ούτω καθεξής) από την ακρίβεια.
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα πρόβλημα στα προϊόντα της Microsoft που παρατίθενται στην ενότητα "ισχύει για".