Sintomas
Quando você executa uma instrução de atualização complexa juntamente com uma dica NOLOCK em relação a uma tabela no Microsoft SQL Server 2008, SQL Server 2012, SQL Server 2008 R2 ou SQL Server 2014, Talvez ocorra uma corrupção de índice não clusterizado. Além disso, a seguinte mensagem de erro pode ser registrada no log de erros do SQL Server:
<data><time> spid # erro: 8646, severidade: 21, estado: 1. <Data><time> SPID # não é possível encontrar a entrada de índice na ID de índice 3, da tabela 2102402659, no banco de dados ' <DatabaseName> '. O índice indicado está corrompido ou há um problema com o plano de atualização atual. Execute DBCC CHECKDB ou DBCC CHECKtable. Se o problema persistir, entre em contato com o suporte ao produto. <data><time> SPID # usando ' dbghelp. dll ' versão ' 4.0.5 ' <Data><time> SPID # * * despejo thread-SPID = 0, EC = 0x0000000BD70624C0<Data><time> SPID # * * * pilha despejo sendo enviado para Y:\MSSQL\MSSQL10. MSSQLSERVER\MSSQL\LOG\SQLDump0003.txt><2 data><time> SPID # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * <Data><hora> SPID # * <Data><time> SPID # * iniciar o despejo de pilha: <Data><time> SPID # * <Data><time> SPID # * CPerIndexMetaQS:: (SPID # * <Data><time> SPID # *:: ErrorAbort-><0 de corrupção de índice Data><tempo> SPID # *
ObservaçãoVocê pode aplicar uma dica NOLOCK às tabelas de origem em uma instrução. No entanto, você não pode aplicar uma dica NOLOCK às tabelas de destino em uma instrução.
Causa
Esse problema ocorre porque a dica NOLOCK faz com que a consulta Leia os valores incorretamente na tabela quando a consulta lê os mesmos valores várias vezes.
Resolução
O problema foi corrigido primeiro na atualização cumulativa a seguir 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 incluídas na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes do SQL Server:
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".