KB3181444 - KHẮC PHỤC: Các truy vấn chạy dựa trên cơ sở dữ liệu phụ luôn được biên dịch lại trong SQL Server

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

Triệu chứng

Giả sử bạn sử dụng tính năng Nhóm sẵn sàng AlwaysOn trong Microsoft SQL Server 2012, 2014 hoặc 2016. Mỗi lần bạn thực thi truy vấn đối với cơ sở dữ liệu phụ, truy vấn đó sẽ được biên dịch lại. Sự cố này xảy ra do thống kê không được phát tán chính xác từ máy chủ chính sang máy chủ phụ. Nếu bạn chạy theo dõi profiler, bạn sẽ tìm thấy thông tin tương tự về StatMan , có nghĩa là SQL server đang truy vấn thống kê:

SELECT StatMan([SC0], [SB0000]) FROM (SELECT TOP 100 PERCENT [SC0], step_direction([SC0]) over (order by NULL) AS [SB0000] FROM (SELECT [xxx] AS [SC0] FROM [dbo].[ xxx] TABLESAMPLE SYSTEM (7.033584E-001 PERCENT) WITH (READUNCOMMITTED) ) AS _MS_UPDSTATS_TBL_HELPER ORDER BY [SC0], [SB0000] ) DƯỚI DẠNG _MS_UPDSTATS_TBL TÙY CHỌN (MAXDOP 1)

Lưu ý: Nếu bạn tắt tùy chọn Tự động Cập nhật Thống kê hoặc bật tùy chọn Tự động Cập nhật Thống kê Không đồng bộ, sự cố này sẽ không xảy ra.

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:

Đề xuất: Cài đặt bản cập nhật tích lũy mới nhất 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 đó. 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:

Tham khảo

Tìm hiểu về thuật ngữ mà Microsoft dùng để mô tả các bản cập nhật phần mềm.