Síntomas
Cuando se ejecuta una instrucción de actualización compleja junto con una sugerencia NOLOCK en una tabla de Microsoft SQL Server 2008, SQL Server 2012, SQL Server 2008 R2 o SQL Server 2014, pueden producirse daños en los índices no agrupados. Además, se puede grabar el mensaje de error siguiente en el registro de errores de SQL Server:
<fecha><tiempo> spid # error: 8646, gravedad: 21, estado: 1. <fecha><hora> SPID # no se puede encontrar la entrada de índice en el índice 3, de la tabla 2102402659, en la base de datos ' <nombreBasededatos> '. El índice indicado está dañado o hay un problema con el plan de actualización actual. Ejecute DBCC CHECKDB o DBCC CHECKTABLE. Si el problema persiste, póngase en contacto con el servicio de soporte técnico. <fecha><tiempo> SPID # usando la versión de ' DbgHelp. dll ' ' 4.0.5 ' <de fecha><hora> SPID # * * dump Thread-SPID = 0, EC = 0x0000000BD70624C0<Date><Time> SPID # * * * se envía el volcado de pila a Y:\MSSQL\MSSQL10. MSSQLSERVER\MSSQL\LOG\SQLDump0003.txt><2 Date><Time> SPID # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Date * * * * * * * * de><de SPID # * <de fecha yhora><el spid # * iniciar el volcado de pila :> hora <eltiempo><de SPID # *> de fecha y hora <SPID # * CPerIndexMetaQS:: <> ErrorAbort:><de daños de índice><0 fecha y hora> SPID # * Time
Nota: Puede aplicar una sugerencia NOLOCK a las tablas de origen de una instrucción. Sin embargo, no se puede aplicar una sugerencia NOLOCK a las tablas de destino de una instrucción.
Causa
Este problema se produce porque la sugerencia NOLOCK provoca que la consulta Lea incorrectamente los valores de la tabla cuando la consulta Lee los mismos valores varias veces.
Resolución
El problema se solucionó por primera vez en la siguiente actualización acumulativa de SQL Server.
Actualización acumulativa 1 para SQL Server 2014 /en-us/help/2931693
Actualización acumulativa 11 para SQL Server 2012 /en-us/help/2908007
Actualización acumulativa 7 para SQL Server 2012 SP1 /en-us/help/2894115
Actualización acumulativa 13 para SQL Server 2008 SP3 /en-us/help/2880350
Actualización acumulativa 9 para SQL Server 2008 R2 SP2 /en-us/help/2887606
Cada actualización acumulativa para SQL Server contiene todas las revisiones y todas las revisiones de seguridad incluidas en la actualización acumulativa anterior. Consulte las últimas actualizaciones acumulativas para SQL Server:
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".