Microsoft phân phối Microsoft SQL Server 2008 R2 gói dịch vụ 1 (SP1) hoặc các bản sửa lỗi Microsoft SQL Server 2012 trong một tệp được tải xuống. Vì bản sửa lỗi được tích lũy, mỗi bản phát hành mới chứa tất cả các hotfix và tất cả các bản Cập Nhật bảo mật được bao gồm trong phiên bản SQL Server 2008 R2 gói dịch vụ trước đó 1 (SP1) hoặc Microsoft SQL Server 2012 Update Release.
Triệu chứng
Hãy xem xét tình huống sau:
-
Bạn nâng cấp từ Microsoft SQL Server 2005 sang Microsoft SQL Server 2008 hoặc Microsoft SQL Server 2008 R2 hoặc Microsoft SQL Server 2012.
-
Bạn chạy một truy vấn sử dụng quy trình được lưu trữ sp_cursoropen , rồi xác định tham số rowcount để lấy một vài hàng đầu tiên của bảng.
Trong trường hợp này, hiệu suất có thể chậm hơn nếu bạn chạy cùng truy vấn trong SQL Server 2005.
Nguyên nhân
Sự cố này xảy ra vì trình tối ưu hóa truy vấn sử dụng một kế hoạch con trỏ tĩnh thay vì kế hoạch con trỏ động. Đối với một kế hoạch con trỏ tĩnh, SQL Server sẽ cho tất cả các hàng và chèn chúng vào bảng công việc con trỏ. Tuy nhiên, đối với một kế hoạch con trỏ động, SQL Server sẽ chỉ bị các hàng cần thiết.
Giải pháp
Thông tin Cập Nhật tích lũy
SQL Server 2012
Bản sửa lỗi cho sự cố này lần đầu tiên được phát hành trong Cumulative Update 1 cho SQL Server 2012. Để biết thêm thông tin về gói Cập Nhật lũy tích này, hãy bấm số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:
2679368 Gói Cập Nhật tích lũy 1 cho SQL Server 2012Lưu ý Vì bản dựng được tích lũy, mỗi bản phát hành khắc phục sự cố mới 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 phát hành khắc phục SQL Server 2012 trước đó. Microsoft khuyên bạn nên cân nhắc việc áp dụng bản phát hành khắc phục gần đây nhất có chứa các hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
2692828 Bản dựng SQL Server 2012 đã được phát hành sau khi SQL Server 2012 đã được phát hành Bạn phải áp dụng một hotfix SQL Server 2012 vào một bản cài đặt của SQL Server 2012.
Gói Cập Nhật tích lũy 5 cho SQL Server 2008 R2 SP1
Sau khi bạn áp dụng hotfix này, bật theo dõi cờ 4199. Bản sửa lỗi cho sự cố này lần đầu tiên được phát hành trong bản Cập Nhật tích lũy 5. Để biết thêm thông tin về cách tải gói Cập Nhật tích lũy cho SQL Server 2008 R2 SP1, hãy bấm vào số bài viết sau đây để xem bài viết trong cơ sở kiến thức Microsoft:
2659694 Gói Cập Nhật tích lũy 5 cho SQL Server 2008 R2 SP1Lưu ý Vì bản dựng được tích lũy, mỗi bản phát hành khắc phục sự cố mới 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 phát hành khắc phục sự cố SQL Server 2008 trước đó. Chúng tôi khuyên bạn nên cân nhắc việc áp dụng bản phát hành bản sửa lỗi gần đây nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
2567616 Bản dựng SQL Server 2008 R2 đã được phát hành sau khi SQL Server 2008 R2 SP1 đã được phát hành
Cách giải quyết
Để giải quyết vấn đề này, hãy thêm gợi ý truy vấn nhanh vào truy vấn.
Thông tin Bổ sung
Để biết thêm thông tin về cách sử dụng các gợi ý truy vấn, hãy truy cập trang web MSDN sau đây:
Thông tin chung về cách sử dụng các gợi ý truy vấnĐể biết thêm thông tin về theo dõi cờ 4199, hãy truy cập trang web sau đâ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".