Khắc phục: Tham nhũng Nonclustered chỉ số có thể xảy ra khi bạn chạy một tuyên bố UPDATE phức tạp cùng với một gợi ý NOLOCK chống lại một bàn trong SQL Server 2008, SQL Server 2008 R2 hoặc SQL Server 2012

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 2878968
Triệu chứng
Khi bạn chạy một tuyên bố UPDATE phức tạp cùng với một gợi ý NOLOCK chống lại một bảng trong Microsoft SQL Server 2008, Microsoft SQL Server 2012 hoặc Microsoft SQL Server 2008 R2, tham nhũng nonclustered chỉ số có thể xảy ra. Ngoài ra, thông báo lỗi sau có thể được kí nhập ở Nhật ký lỗi SQL Server:

Ngày>thời gian> bản ghi dịch vụ spid # lỗi: 8646, mức độ nghiêm trọng: 21, bang: 1.
Ngày>thời gian> bản ghi dịch vụ spid # không thể tìm thấy mục chỉ dẫn trong mục chỉ dẫn ID 3, bảng 2102402659, trong bộ máy cơ sở dữ liệu 'DatabaseName>'. Chỉ số chỉ định bị hỏng hoặc có một vấn đề với kế hoạch Cập Nhật hiện tại. Chạy DBCC CHECKDB hoặc DBCC CHECKTABLE. Nếu vấn đề vẫn còn, liên hệ với hỗ trợ sản phẩm.
Ngày>thời gian> bản ghi dịch vụ spid # sử dụng 'dbghelp.dll' Phiên bản '4.0.5'
Ngày>thời gian> bản ghi dịch vụ spid # ** đổ chủ đề - bản ghi dịch vụ spid = 0, EC = 0x0000000BD70624C0
Ngày>thời gian> bản ghi dịch vụ spid # *** Stack đổ được gửi đến Y:\MSSQL\MSSQL10.MSSQLSERVER\MSSQL\LOG\SQLDump0003.txt
Date>Time> spid # * *******************************************************************************
Ngày>thời gian> bản ghi dịch vụ spid # *
Ngày>thời gian> bản ghi dịch vụ spid # * Bắt đầu đổ ngăn xếp:
Ngày>thời gian> bản ghi dịch vụ spid # * ngày>thời gian> bản ghi dịch vụ spid #
Ngày>thời gian> bản ghi dịch vụ spid # *
Ngày>thời gian> bản ghi dịch vụ spid # * CPerIndexMetaQS::ErrorAbort - chỉ số tham nhũng
Ngày>thời gian> bản ghi dịch vụ spid # *

Lưu ý
bạn có thể áp dụng một gợi ý NOLOCK cho nguồn bảng trong một tuyên bố. Tuy nhiên, bạn không thể áp dụng một gợi ý NOLOCK cho mục tiêu bảng trong một tuyên bố.

Nguyên nhân
Vấn đề này xảy ra vì những gợi ý NOLOCK gây ra các truy vấn không chính xác đọc giá trị trong bảng khi truy vấn đọc cùng một giá trị nhiều lần.
Giải pháp
Vấn đề đã được cố định đầu tiên trong cumulative update sau của SQL Server.

Cập Nhật tích lũy 11 cho SQL Server 2012

Tích lũy Update 7 cho SQL Server 2012 SP1

Tích lũy update 13 cho SQL Server 2008 SP3 CTP

Cập Nhật tích lũy 9 cho SQL Server 2008 R2 SP2

Về tích lũy Cập Nhật cho SQL Server

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 mà được đính kèm với trước cumulative update. Kiểm tra các bản Cập Nhật tích lũy đặt cho SQL Server:
Tình trạng
Microsoft đã xác nhận rằng đây là sự cố trong sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 2878968 - Xem lại Lần cuối: 12/16/2013 18:20:00 - Bản sửa đổi: 4.0

Microsoft SQL Server 2008 Service Pack 3, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 R2 Workgroup, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2878968 KbMtvi
Phản hồi