KB3051993 - KHẮC PHỤC: Giá trị của kiểu NUMBER bị cắt cụt khi bạn chọn dữ liệu từ một máy chủ liên kết với Oracle bằng cách sử dụng nhà cung cấp OLE DB

Áp dụng cho
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Triệu chứng

Khi bạn thực hiện truy vấn để chọn dữ liệu từ máy chủ liên kết với Oracle bằng cách sử dụng nhà cung cấp OLE DB trong Microsoft SQL Server 2012 hoặc SQL Server 2014, các giá trị trong cột kiểu SỐ có thể bị cắt ngắn trong kết quả truy vấn.

Nguyên nhân

Sự cố này xảy ra do kiểu SỐ Oracle có độ chính xác/tỷ lệ không được khai báo có thể không có ánh xạ 1:1 rõ ràng đến kiểu dữ liệu SQL Server. Trước SQL Server 2012 SP2 CU2, SQL Server ánh xạ các giá trị đó vào các chuỗi để đảm bảo không xảy ra sự mất độ chính xác. Tuy nhiên, điều đó có thể dẫn đến kết quả không chính xác nếu truy vấn yêu cầu thứ tự sắp xếp trên các giá trị đó. Trong SQL Server 2012 SP2 CU2, ánh xạ được thay đổi thành số (38, 0) để cho phép biểu diễn các khóa số nguyên lớn mà một số sơ đồ cơ sở dữ liệu đang sử dụng NUMBER mà không có độ chính xác/tỷ lệ. Điều này dẫn đến hồi quy khi cần các giá trị không phải số nguyên.

Giải pháp

Sau khi bạn áp dụng bản sửa lỗi này, các giá trị NUMBER không xác định độ chính xác/tỷ lệ sẽ được coi là giá trị kép với OLE DB provider. Nếu độ chính xác rất quan trọng và phạm vi của các giá trị không đủ lớn, bạn có thể bật Cờ Theo dõi 7314 mới mà sẽ bắt đầu xử lý các giá trị như dạng số (38, 10).

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 SP1 /en-us/help/3067839

Cập nhật Tích lũy 8 cho SQL Server 2014 /en-us/help/3067836

Cập nhật tích lũy 6 cho SQL Server 2012 SP2 /en-us/help/3052468

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:

      

Giải pháp thay thế

Để tránh sự cố này, trước tiên hãy chuyển đổi trường Oracle từ kiểu SỐ sang kiểu dữ liệu được SQL Server hỗ trợ hoàn toàn.

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 phần "Áp dụng cho".

Tuyên bố từ chối trách nhiệm thông tin của bên thứ ba

Các sản phẩm bên thứ ba mà bài viết này đề cập được sản xuất bởi các công ty độc lập với Microsoft. Microsoft không đưa ra sự đảm bảo, dù là ngụ ý hay theo một hình thức khác, về hiệu suất hoặc mức độ tin cậy của những sản phẩm này.