Triệu chứng
Giả sử bạn tạo một thuộc tính Số trong Dịch vụ Dữ liệu Chính (MDS) của Microsoft SQL Server 2012 hoặc SQL Server 2014 bằng cách sử dụng Dịch vụ Web MDS. Khi bạn cố gắng xác định nhiều chữ số hơn vào cạnh bên phải của dấu thập phân, độ chính xác không chính xác sẽ được tính.
Ví dụ:
Khi bạn cố tạo một thuộc tính thập phân có độ chính xác 16 chữ số bằng cách thực hiện:
MetadataAttribute newAttribute = new MetadataAttribute();
newAttribute.DataType = AttributeDataType.Number;
newAttribute.DataTypeInformation = 16;
Một cột được tạo có Thang đo chính xác là 16 và Độ chính xác không chính xác là 22.
Nguyên nhân
Sự cố này xảy ra vì một thủ tục lưu trữ 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 là 38 trừ đi tỷ lệ, điều này không chính xác.
Giải pháp
Sự cố này được khắc phục lần đầu tiên trong bản cập nhật tích lũy tiếp theo của SQL Server.
Cập nhật tích lũy 1 cho SQL Server 2014 /en-us/help/2931693
Cập nhật tích lũy 9 cho SQL Server 2012 SP1 /en-us/help/2931078
Giới thiệu về các bản cập nhật tích lũy cho SQL Server
Mỗi bản cập nhật tích lũy mới dành cho SQL Server chứa tất cả các bản sửa lỗi nóng và bản sửa lỗi bảo mật được tích hợp trong bản cập nhật tích lũy trước đó. Xem các bản cập nhật tích lũy mới nhất cho SQL Server:
- Bản cập nhật tích lũy mới nhất cho SQL Server 2014
- Bản cập nhật tích lũy mới nhất cho SQL Server 2012 SP1
Giải pháp thay thế
Để khắc phục sự cố này, hãy sử dụng các phương pháp sau đây được đánh giá cao cho trường hợp 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, hãy thay đổi các thủ tục lưu trữ để sử dụng giá trị hằng số 38 (tối đa được SQL Server 2012 cho phép) thay vì trừ đi tỷ lệ (@DataTypeInformation, v.v.) từ Độ chính xác.
Trạng thái
Microsoft đã xác nhận rằng đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong mục "áp dụng cho".