Triệu chứng
Giả định rằng bạn tạo một thuộc tính số trong Microsoft SQL Server 2012 hoặc SQL Server 2014 Master Data Services (MDS) bằng cách sử dụng dịch vụ web MDS. Khi bạn tìm cách xác định thêm chữ số vào bên phải của dấu thập phân, độ chính xác không đúng được tính. Ví dụ: khi bạn tìm cách tạo một thuộc tính thập phân có 16 chữ số chính xác bằng cách thực hiện:
MetadataAttribute newAttribute = new MetadataAttribute(); newAttribute.DataType = AttributeDataType.Number; newAttribute.DataTypeInformation = 16;
Cột được tạo có tỷ lệ chính xác 16 và độ chính xác sai số của 22.
Nguyên nhân
Sự cố xảy ra do một thủ tục được lưu trữ trong MDS nội bộ sử dụng tính toán sai chính xác khi bạn tạo thuộc tính. Độ chính xác được tính toán như 38 trừ Thang đo, vốn không đúng.
Giải pháp
Vấn đề lần đầu tiên được khắc phục trong bản Cập Nhật tích lũy SQL Server sau đây.
Cập Nhật tích lũy 1 cho SQL Server 2014 /en-us/help/2931693
Bản Cập Nhật tích lũy 9 cho SQL Server 2012 SP1 /en-us/help/2931078
Mỗi bản Cập Nhật tích lũy mới cho SQL Server chứa tất cả các hotfix và tất cả các bản sửa lỗi bảo mật đã được đưa vào bản Cập Nhật tích lũy trước đó. Kiểm tra các bản Cập Nhật tích lũy mới nhất cho SQL Server:
Cách giải quyết
Để giải quyết vấn đề này, hãy sử dụng các phương pháp sau được đánh giá cao về tình huống của bạn:
-
Đối với SQL Server 2014, hãy áp dụng bản sửa lỗi.
-
Đối với SQL Server 2012, thay đổi quy trình được lưu trữ để sử dụng giá trị hằng số của 38 (tối đa được phép SQL Server 2012) thay vì trừ tỉ lệ (@DataTypeInformation, v.v.) từ độ chính xác.
Trạng thái
Microsoft đã xác nhận đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".