Симптоми
Когато изпълнявате сложна инструкция за актуализиране заедно с NOLOCK намек за таблица в Microsoft SQL Server 2008, SQL Server 2012, SQL Server 2008 R2 или SQL Server 2014, е възможно да възникне повреда в индекса на неклъстерен индекс. Освен това може да се запише следното съобщение за грешка в регистрационния файл за грешки на SQL Server:
<дата><Time> spid # Error: 8646, тежест: 21; щат: 1. <Дата><час> SPID # не можете да намерите запис на индекс в ИД на индекс 3, на таблица 2102402659, в база данни "<DatabaseName>". Посоченият индекс е повреден или има проблем с текущия план за актуализиране. Изпълнение на DBCC CHECKDB или DBCC CHECKTABLE. Ако проблемът продължава, обърнете се към поддръжката на продукта. <дата><час> SPID # с помощта на "dbghelp. dll" версия "4.0.5" <Дата><време> SPID # * * Dump конец-SPID = 0; EC = 0x0000000BD70624C0<Дата><час> SPID # * * * стек дъмп, който се изпраща към Y:\MSSQL\MSSQL10. MSSQLSERVER\MSSQL\LOG\SQLDump0003.txt><2 дата><време> SPID # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * <Дата><време> SPID # * <дата><време> SPID # *- SPID <време><SPID # *> Дата <час><SPID #> Дата <време><SPID # *>- за ":" ErrorAbort-индекс за корупция><0 Дата><време> SPID # *
Забележка Можете да приложите NOLOCK намек към таблиците източник в изявление. Не можете да прилагате подсказване на NOLOCK , за да насочвате таблици в изявление.
Причина
Този проблем възниква, защото намекът за NOLOCK кара заявката да чете неправилно стойности в таблицата, когато заявката прочита същите стойности няколко пъти.
Решение
Проблемът е коригиран първо в следващата сборна актуализация на SQL Server.
Сборна актуализация 1 за SQL Server 2014 /en-us/help/2931693
Кумулативна актуализация 11 за SQL Server 2012 /en-us/help/2908007
Кумулативна актуализация 7 за SQL Server 2012 SP1 /en-us/help/2894115
Кумулативна актуализация 13 за SQL Server 2008 SP3 /en-us/help/2880350
Кумулативна актуализация 9 за SQL Server 2008 R2 SP2 /en-us/help/2887606
Всяка нова сборна актуализация за SQL Server съдържа всички поправки и всички корекции на защитата, които са били включени в предишната сборна актуализация. Вижте последните сборни актуализации за SQL Server:
Състоянието
Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са посочени в секцията "важи за".