Sintomas
Quando executar uma declaração de ATUALIZAÇÃO complexa juntamente com uma sugestão NOLOCK contra uma tabela no Microsoft SQL Server 2008, SQL Server 2012, SQL Server 2008 R2 ou SQL Server 2014, pode ocorrer corrupção de índice não recluso. Além disso, a seguinte mensagem de erro pode ser registada no registo de erro do SQL Server:
<Data><Tempo> espiado # Erro: 8646, Severidade: 21, Estado: 1.<Data><Tempo> espiado # Incapaz de encontrar entrada de índice no Índice ID 3, da tabela 2102402659, na base de dados '<DatabaseName>'. O índice indicado é corrupto ou há um problema com o plano de atualização atual. Executar DBCC CHECKDB ou DBCC CHECKTABLE. Se o problema persistir, contacte o suporte do produto.<Data><tempo> espiado # Usando a versão 'dbghelp.dll' versão '4.0.5'<Data><tempo> espiada # **Linha de descarga - espid = 0, EC = 0x000000BD70624C0 <Data><tempo> espiado # ***Stack Dump sendo enviado para Y:\MSSQL\MSSQL10. MSSQLSERVER\MSSQL\LOG\SQLDump0003.txt><2 Data><Tempo> espiado # * *****************************************************************************************************************************************************************************************************************************************************************************************************************************> >< <*************************************spid # *<Data><hora> espiado # * START STACK DUMP:<TimeData><hora> spid # * data <><hora> spid#<Data <> tempo><> spid # *<Data><Tempo> spid # * CPerIndexMetaQS::ErrorAbort - Índice de corrupção><0 Data><hora> espiado # * * Date
NotaPode aplicar uma sugestão NOLOCK às tabelas de origem em comunicado. No entanto, não é possível aplicar uma sugestão NOLOCK às tabelas-alvo num comunicado.
Causa
Esta questão ocorre porque a sugestão NOLOCK faz com que a consulta leia incorretamente valores na tabela quando a consulta lê os mesmos valores várias vezes.
Resolução
O problema foi corrigido pela primeira vez na seguinte atualização cumulativa do SQL Server.
Atualização Cumulativa 1 para SQL Server 2014 /en-us/help/2931693
Atualização Cumulativa 11 para SQL Server 2012 /en-us/help/2908007
Atualização Cumulativa 7 para SQL Server 2012 SP1 /en-us/help/2894115
Atualização cumulativa 13 para SQL Server 2008 SP3 /en-us/help/2880350
Atualização Cumulativa 9 para SQL Server 2008 R2 SP2 /en-us/help/2887606
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança que foram incluídas com a atualização cumulativa anterior. Confira as últimas atualizações cumulativas do SQL Server:
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".