Triệu chứng
Giả định rằng bạn sử dụng trình điều khiển ODBC sqlncli11. dll để truy nhập Microsoft SQL Server 2012 hoặc SQL Server 2014 trong một ứng dụng. Khi bạn dùng con trỏ máy chủ và hàm Sqlfetch/ SQLGetData để truy nhập vào một số dữ liệu đối tượng lớn nhị phân (blob) trong SQL Server, vấn đề về hiệu suất sẽ xảy ra đặc biệt là đối với các kiểu dữ liệu lớn như varbinary (Max) hoặc varchar (Max).
Nguyên nhân
Đây là một vấn đề thiết kế để thực hiện hàm Sqlfetch/ SQLGetData trong trình điều khiển ODBC SQL Server 2012. Khi truy vấn sử dụng bất kỳ con trỏ máy chủ nào, trình điều khiển ODBC sẽ diễn ra sp_cursorfetch trong quá trình thực hiện sqlfetch và máy chủ gửi đi tất cả các hình thu nhập cho máy khách. Sau đó, khi SQLGetData được thực thi, sp_cursor sẽ mang lại tất cả các blob trở lại. Thao tác này ảnh hưởng đến hiệu suất cho các kiểu dữ liệu lớn như varbinary (Max) hoặc varchar (Max).
Giải pháp
Thông tin Cập Nhật tích lũy
Việc thực hiện mới có thể gọi sp_cursoroption để có được TEXTPTR_ONLY trước sp_cursorfetch, rồi gọi sp_cursoroption để đặt lại vào textdata trước sp_cursor. Điều này có thể cải thiện hiệu suất. 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.
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 đó. Chúng tôi khuyên bạn nên tải xuống và cài đặt các bản Cập Nhật tích lũy mới nhất cho SQL Server:
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".