Sintomas
Quando executa uma instrução UPDATE complexa juntamente com uma sugestão NOLOCK numa tabela no Microsoft SQL Server 2008, SQL Server 2012, SQL Server 2008 R2 ou SQL Server 2014, poderão ocorrer danos não agrupados no índice. Além disso, a seguinte mensagem de erro pode ser registrada no log de erros SQL Server:
Nota
<Data><Hora> spid # Erro: 8646, gravidade: 21, estado: 1.
<Date><Time> spid # Unable to find index entry in index ID 3, of table 2102402659, in database '<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, contacte o suporte técnico.
<Data><Hora> spid # Usando 'dbghelp.dll' versão '4.0.5'
<Data><Hora> spid # **Dump thread - spid = 0, EC = 0x0000000BD70624C0
<Data><Hora> spid # ***Stack Dump sendo enviado para Y:\MSSQL\MSSQL10.MSSQLSERVER\MSSQL\LOG\SQLDump0003.txt
<Data><Hora> spid # * *******************************************************************************
<Data><Hora> spid # *
<Data><Hora> spid # * BEGIN STACK DUMP:
<Data><Hora> spid # * <Data><Hora> spid#
<Data><Hora> spid # *
<Data><Hora> spid # * CPerIndexMetaQS::ErrorAbort - Index corruption
<Data><Hora> spid # *
Observação Você pode aplicar uma dica NOLOCK às tabelas de origem em uma instrução. No entanto, não é possível aplicar uma dica NOLOCK a tabelas de destino em uma instrução.
Causa
Este problema ocorre porque a sugestão NOLOCK faz com que a consulta leia incorretamente os valores na tabela quando a consulta lê os mesmos valores múltiplas vezes.
Resolução
O problema foi corrigido na atualização cumulativa seguinte do SQL Server.
Atualização Cumulativa 1 para SQL Server 2014 /pt-PT/help/2931693
Atualização Cumulativa 11 para SQL Server 2012 /pt-pt/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
Acerca das atualizações cumulativas para SQL Server
Cada nova atualização cumulativa para 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. Consulte as atualizações cumulativas mais recentes para SQL Server:
- Atualização cumulativa mais recente para o SQL Server 2014
- Atualização cumulativa mais recente para o SQL Server 2012
- Atualização cumulativa mais recente para o SQL Server 2012 SP1
- Atualização cumulativa mais recente para o SQL Server 2008 R2 SP2
- Atualização cumulativa mais recente para o SQL Server 2008 SP3
Estado
A Microsoft confirmou que se trata de um problema nos produtos Microsoft listados na secção "Aplica-se a".