Triệu chứng
Khi bạn chạy câu lệnh UPDATE phức tạp cùng với gợi ý NOLOCK đối với bảng trong Microsoft SQL Server 2008, SQL Server 2012, SQL Server 2008 R2 hoặc SQL Server 2014, chỉ mục không liên cụm có thể xảy ra. Ngoài ra, thông báo lỗi sau có thể được ghi nhật ký trong nhật ký lỗi SQL Server:
Lưu ý
<Ngày Giờ><> spid # Lỗi: 8646, Mức độ nghiêm trọng: 21, Tiểu bang: 1.
<Ngày Giờ><> spid # Không thể tìm thấy mục chỉ mục trong ID chỉ mục 3 của bảng 2102402659 trong cơ sở dữ liệu 'DatabaseName<>'. Chỉ mục được chỉ báo bị hỏng hoặc có vấn đề với gói cập nhật hiện tại. Chạy DBCC CHECKDB hoặc DBCC CHECKTABLE. Nếu sự cố vẫn tiếp diễn, hãy liên hệ với bộ phận hỗ trợ sản phẩm.
<Ngày:><Giờ> spid # Sử dụng 'dbghelp.dll' phiên bản '4.0.5'
<Ngày Giờ><> spid # **Chuỗi hội thoại kết xuất - spid = 0, EC = 0x0000000BD70624C0
<Ngày giờ><, spid> # ***Stack Dump đang được gửi đến Y:\MSSQL\MSSQL10.MSSQLSERVER\MSSQL\LOG\SQLDump0003.txt
<Ngày Giờ><> spid # * *******************************************************************************
<Ngày Giờ><> spid # *
<Ngày Giờ><> spid # * BEGIN STACK DUMP:
<Ngày Giờ><> spid # * <Ngày Giờ><spid>#
<Ngày Giờ><> spid # *
<Ngày Giờ><> spid # * CPerIndexMetaQS::ErrorAbort - Hỏng chỉ mục
<Ngày Giờ><> spid # *
Lưu ý: Bạn có thể áp dụng gợi ý NOLOCK cho các bảng nguồn trong một câu lệnh. Tuy nhiên, bạn không thể áp dụng gợi ý NOLOCK cho các bảng đích trong một câu lệnh.
Nguyên nhân
Sự cố này xảy ra vì gợi ý NOLOCK khiến truy vấn đọc sai các giá trị trong bảng khi truy vấn đọc các giá trị giống nhau nhiều lần.
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.
Cập nhật tích lũy 1 cho SQL Server 2014 /en-us/help/2931693
Cập nhật tích lũy 11 cho SQL Server 2012 /en-us/help/2908007
Bản cập nhật tích lũy 7 cho SQL Server 2012 SP1 /en-us/help/2894115
Cập nhật tích lũy 13 cho SQL Server 2008 SP3 /en-us/help/2880350
Bản cập nhật tích lũy 9 cho SQL Server 2008 R2 SP2 /en-us/help/2887606
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 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 đó. Xem các bản cập nhật tích lũy mới nhất cho SQL Server:
- Bản cập nhật tích lũy mới nhất cho SQL Server 2014
- Bản cập nhật tích lũy mới nhất cho SQL Server 2012
- Bản cập nhật tích lũy mới nhất cho SQL Server 2012 SP1
- Bản cập nhật tích lũy mới nhất cho SQL Server 2008 R2 SP2
- Bản cập nhật tích lũy mới nhất cho SQL Server 2008 SP3
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".