Triệu chứng
Lỗi xác nhận có thể xảy ra khi Microsoft SQL Server nhiều lần thực thi quy trình lưu trữ thực hiện các thao tác sau:
- Lấy một đối tượng lớn, chẳng hạn như varchar(max) hoặc varbinary(max), làm đối số và
- Tạo bảng tạm thời trong phạm vi thực thi thủ tục và
- Sử dụng đối số đối tượng lớn trong bảng tạm thời.
Bạn có thể thấy lỗi xác nhận tương tự như sau trong nhật ký SQL Server báo lỗi:
Ngày/Giờ SPID Lỗi: 17065, Mức độ nghiêm trọng: 16, Trạng thái: 1.
Ngày/Giờ SPID SQL Server Xác nhận: Tệp: FilePath\FileName, line = LineNumber Failed Assertion = 'fFalse' Attempt to access expired blob handle (1). Lỗi này có thể liên quan đến thời gian. Nếu lỗi này vẫn tiếp diễn sau khi chạy lại câu lệnh, hãy sử dụng DBCC CHECKDB để kiểm tra tính toàn vẹn cấu trúc của cơ sở dữ liệu hoặc khởi động lại máy chủ để đảm bảo cấu trúc dữ liệu trong bộ nhớ không bị hỏng.
Ngày/Giờ SPID Lỗi: 3624, Mức độ nghiêm trọng: 20, Trạng thái: 1.
Ngày/Giờ SPID Không kiểm tra hiển thị được yêu cầu hệ thống. Kiểm tra nhật ký SQL Server nhật ký lỗi để biết chi tiết. Thông thường, lỗi xác nhận là do lỗi phần mềm hoặc hỏng dữ liệu. Để kiểm tra lỗi cơ sở dữ liệu, hãy cân nhắc việc chạy DBCC CHECKDB. Nếu bạn đồng ý gửi bãi cho Microsoft trong quá trình thiết lập, bãi chứa mini sẽ được gửi đến Microsoft. Bản cập nhật có thể có sẵn từ Microsoft trong Gói Dịch vụ mới nhất hoặc trong Bản cập nhật nóng từ Bộ phận Hỗ trợ Kỹ thuật.
Nguyên nhân
SQL Server có lô-gic nội bộ để vô hiệu hóa bộ đệm ẩn truy vấn tham chiếu đến các đối tượng lớn để các thực thi sau đó không tham chiếu đến các LOBs (đã được tạo ra trong khi chạy trước và do đó không hợp lệ cho các lần chạy tiếp theo). Lô-gic đó không xử lý trường hợp Độ phân giải Tên Trì hoãn ( DNR) trên bảng tạm thời đã gây ra các kế hoạch được lưu vào bộ đệm ẩn. Việc tạo bảng tạm thời trong phạm vi rất tốn kém và SQL Server ẩn chúng để tái sử dụng trong các lần thực thi tiếp theo. Điều này ngăn chặn recompilation truy vấn như vậy vì thay đổi sơ đồ.
Tìm hiểu thêm về Độ phân giải Tên Bị hoãn.
Giải pháp
Sự cố này đã được khắc phục trong các bản cập nhật tích lũy sau đây SQL Server:
Bản cập nhật tích lũy 8 cho SQL Server 2016 SP1
Bản cập nhật Tích lũy 4 cho SQL Server 2017
Bản cập nhật tích lũy 10 cho SQL Server 2014 Gói Dịch vụ 2
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 SQL Server sẽ chứa tất cả các bản cập nhật nóng và bản sửa lỗi bảo mật có trong bản dựng trước. Hãy xem bản cập nhật tích lũy mới nhất dành cho doanh SQL Server:
Bản cập nhật tích lũy mới nhất cho SQL Server 2016
Bản cập nhật tích lũy mới nhất cho SQL Server 2017
các bản cập nhật tích lũy mới nhất cho SQL Server 2014
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 mục "áp dụng cho".
Tham khảo
Tìm hiểu về thuật ngữ mà Microsoft sử dụng để mô tả các bản cập nhật phần mềm.