Triệu chứng
Khi bạn thực hiện một truy vấn để chọn dữ liệu từ một máy chủ được liên kết 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 cụt trong kết quả truy vấn.
Nguyên nhân
Sự cố này xảy ra vì, kiểu số Oracle có độ chính xác không khai báo có thể không có ánh xạ rõ ràng 1:1 vào kiểu dữ liệu SQL Server. Trước khi SQL Server 2012 SP2 CU2, bản đồ SQL Server các giá trị đó thành chuỗi để đảm bảo rằng không có lỗ chính xác xảy ra. Tuy nhiên, có thể dẫn đến kết quả không chính xác nếu yêu cầu sắp xếp truy vấn thứ tự trên các giá trị đó. Trong SQL Server 2012 SP2 CU2, bản đồ sẽ được thay đổi thành số (38, 0) để cho phép biểu thị các phím số nguyên lớn mà một số trình chuyển đổi cơ sở dữ liệu đang dùng số mà không có độ chính xác/tỉ lệ cho. Điều này sẽ dẫn đến regressions khi cần các giá trị không phải là số nguyên.
Giải pháp
Sau khi bạn áp dụng bản sửa lỗi này, giá trị số không xác định độ chính xác/tỉ lệ được xử lý là giá trị kép với nhà cung cấp OLE DB. Nếu độ chính xác là quan trọng và phạm vi giá trị không đủ lớn, bạn có thể bật gắn cờ theo dõi mới 7314 vốn sẽ bắt đầu điều trị các giá trị như số (38, 10).
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 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
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 chuyển đổi trường Oracle từ kiểu số đến kiểu dữ liệu được SQL Server hỗ trợ đầy đủ.
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".
Các sản phẩm của bên thứ ba mà bài viết này thảo luận được các công ty độc lập với Microsoft sản xuất. Microsoft không bảo hành, dù ngụ ý hay không, về hiệu suất hoạt động hoặc độ tin cậy của các sản phẩm này.