Síntomas
Durante el inicio de Microsoft SQL Server, observa uno o varios de los siguientes síntomas inmediatamente después de que se complete la recuperación de la base de datos y se habiliten las conexiones de cliente.
Síntoma 1
Recibe mensajes de error y aserciones similares a las siguientes en el registro de errores de SQL Server:
Nota
2014-12-13 08:03:34.85 spid24s Usando la versión "dbghelp.dll" '4.0.5'
2014-12-13 08:03:34.85 spid24s **Dump thread - spid = 0, EC = 0x0000000082274B20
2014-12-13 08:03:34.85 spid24s ***Stack Dump que se envía a C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\LOG\SQLDump0001.txt
2014-12-13 08:03:34.85 spid24s * *******************************************************************************
2014-12-13 08:03:34.85 spid24s *
2014-12-13 08:03:34.85 spid24s * BEGIN STACK DUMP:
2014-12-13 08:03:34.85 spid24s * 13/12/14 08:03:34 spid 24
2014-12-13 08:03:34.85 spid24s *
2014-12-13 08:03:34.85 spid24s * Ubicación: ghost.cpp:1742
2014-12-13 08:03:34.85 spid24s * Expression: tcln1 != NULL
2014-12-13 08:03:34.85 spid24s * SPID: 24
2014-12-13 08:03:34.85 spid24s * Id. del proceso: 35444
2014-12-13 08:03:34.85 spid24s *
2014-12-13 08:03:35.47 spid24s Error: 17066, Gravedad: 16, Estado: 1.
2014-12-13 08:03:35.47 spid24s SQL Server Aserción: Archivo: <ghost.cpp>, line=1742 Failed Assertion = 'tcln1 != NULL'. Este error puede estar relacionado con los intervalos. Si el error persiste después de reenviar la instrucción, use DBCC CHECKDB para comprobar la integridad estructural de la base de datos o reinicie el servidor para asegurarse de que las estructuras de datos en memoria no están dañadas.
Síntoma 2
Recibe mensajes de error y excepciones similares a las siguientes en el registro de errores de SQL Server:
Nota
2014-12-13 12:38:30.25 spid51 Usando la versión 'dbghelp.dll' '4.0.5'
2014-12-13 12:38:30.25 spid51 ***Volcado de pila que se envía a C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\LOG\SQLDump0003.txt
2014-12-13 12:38:30.25 spid51 SqlDumpExceptionHandler: Process 51 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server está terminando este proceso.
2014-12-13 12:38:30.25 spid51 * *******************************************************************************
2014-12-13 12:38:30.25 spid51 *
2014-12-13 12:38:30.25 spid51 * BEGIN STACK DUMP:
2014-12-13 12:38:30.25 spid51 * 13/12/14 12:38:30 spid 51
2014-12-13 12:38:30.25 spid51 *
2014-12-13 12:38:30.25 spid51 *
2014-12-13 12:38:30.25 spid51 * Exception Address = 000000000030D47C Module(sqlservr+00000000000FD47C)
2014-12-13 12:38:30.25 spid51 * Código de excepción = c0000005 EXCEPTION_ACCESS_VIOLATION
2014-12-13 12:38:30.25 spid51 * Se produjo una infracción de acceso dirección de lectura FFFFFFFFFFFFFF
2014-12-13 12:38:30.25 spid51 * Búfer de entrada 54 bytes -
2014-12-13 12:38:30.25 spid51 * ejecución usp_select1
2014-12-13 12:38:30.77 Error del servidor: 17310, Gravedad: 20, Estado: 1.
2014-12-13 12:38:30.77 Servidor Una petición de usuario de la sesión con SPID 51 generó una excepción fatal. SQL Server va a finalizar esta sesión. Ponte en contacto con los servicios de soporte técnico de productos con el volcado producido en el directorio de registro.
La infracción de acceso tendrá la siguiente pila de llamadas:
sqlservr! TaskGhostCleanup::IsHashed+0x8d
sqlservr! TaskGhostCleanup::Enqueue+0x32
sqlservr! IndexRowScanner::MoveToRowOnNextPage+0x9c
sqlservr! IndexDataSetSession::GetNextRowValuesInternal+0x11cb
Síntoma 3
Después de recibir los mensajes que se mencionan en las secciones de síntomas anteriores, recibe los siguientes mensajes en el registro de errores de SQL Server:
Nota
2014-12-13 08:04:53.37 Proceso del servidor 0:0:0 (0x23c8) Trabajador 0x000000002880C1A0 parece no producir en el Programador 23. Tiempo de creación de subprocesos: 13062953007877. Aprox CPU subproceso utilizado: kernel 0 ms, usuario 0 ms. Utilización de procesos 0%. Sistema inactivo 88%. Intervalo: 70013 ms.
2014-12-13 08:04:53.37 Proceso del servidor 0:0:0 (0x71d8) 0x000000002A8D21A0 de trabajo parece no producir en el Programador 30. Tiempo de creación de subprocesos: 13062953007891. Aprox CPU subproceso utilizado: kernel 0 ms, usuario 0 ms. Utilización de procesos 0%. Sistema inactivo 88%. Intervalo: 70013 ms.
2014-12-13 08:04:53.38 Server ***Unable to get thread context for spid 0
2014-12-13 08:04:53.38 Server * *******************************************************************************
2014-12-13 08:04:53.38 Server *
2014-12-13 08:04:53.38 Servidor * BEGIN STACK DUMP:
2014-12-13 08:04:53.38 Servidor * 13/12/14 08:04:53 spid 29488
2014-12-13 08:04:53.38 Server *
2014-12-13 08:04:53.38 Servidor * Programador sin rendimiento
2014-12-13 08:04:53.38 Server *
2014-12-13 08:04:53.38 Server * *******************************************************************************
2014-12-13 08:04:53.38 Se 0x0000000000000341
2014-12-13 08:04:55.43 Código de devolución del proceso de volcado externo del servidor 0x20000001. El proceso de volcado externo no devolvió ningún error.
2014-12-13 08:04:55.43 Proceso del servidor 0:0:0 (0x9358) Trabajador 0x0000000081CE41A0 parece no producir en el Programador 4. Tiempo de creación de subprocesos: 13062953009701. Aprox CPU subproceso utilizado: kernel 0 ms, usuario 15 ms. Utilización de procesos 0%. Sistema inactivo 88%. Intervalo: 70011 ms.
SQL Server pueden no responder a las solicitudes de usuario en este momento. Si este es el caso, debe reiniciar el servicio para corregir la situación.
Causa
Este problema se produce porque las consultas de usuario intentan usar las colas de limpieza fantasma antes de que este proceso se inicializa por completo.
Resolución
Información del Service Pack
Para resolver este problema, obtenga el Service Pack 1 para SQL Server 2014.
Para obtener más información sobre el Service Pack 1 (SP1) de SQL Server 2014, consulte errores corregidos en SQL Server 2014 Service Pack 1 .
Revisión para SQL Server 2008 SP4
Para resolver este problema, aplique kb 3034373: un paquete de actualización de revisiones a petición está disponible para SQL Server 2008 SP4 .
Revisión para SQL Server 2008 R2 SP3
Para resolver este problema, aplique kb 3033860: un paquete de actualización de revisiones a petición está disponible para SQL Server 2008 R2 SP3 .
Información sobre la actualización acumulativa
La mejora de características se introdujo en la siguiente actualización acumulativa de SQL Server.
Actualización acumulativa 6 de SQL Server de 2014 /help/3031047
Actualización acumulativa 4 para SQL Server 2012 SP2 /help/3007556
Actualización acumulativa 14 para SQL Server 2012 SP1 /help/3023636
Acerca de las actualizaciones acumulativas para SQL Server
Cada nueva actualización acumulativa de SQL Server contiene todas las revisiones y todas las correcciones de seguridad que se incluyeron con la actualización acumulativa anterior. Echa un vistazo a las últimas actualizaciones acumulativas de SQL Server:
- Actualización acumulativa más reciente de SQL Server 2014
- Actualización acumulativa más reciente para SQL Server 2012 SP2
- Actualización acumulativa más reciente para SQL Server 2012 SP1
Solución alternativa
Siga estos pasos para solucionar el problema:
- Configura -T669 como parámetro de inicio. Estas marcas de seguimiento impiden que las consultas de usuario puedan poner en cola las solicitudes para el proceso de limpieza fantasma.
- Configure una alerta de Agente SQL Server para desencadenar un trabajo en SQL Msg 3408. Por ejemplo, configure la siguiente alerta:
Se ha completado la recuperación. Solo se trata de un mensaje informativo. No es necesaria ninguna acción del usuario. - Dentro de este trabajo, ejecute un script TSQL para esperar de 5 a 10 minutos y luego ejecute el comando DBCC TRACEOFF (669,-1).
Este procedimiento garantiza que esta marca de seguimiento esté activa solo durante SQL Server inicio. El uso de esta marca de seguimiento no afecta al funcionamiento habitual del proceso de limpieza de fantasmas en segundo plano.
Estado
Microsoft ha confirmado que se trata de un problema con SQL Server y actualmente está investigando una corrección para este problema. Este artículo de Knowledge Base se actualizará con información adicional a medida que esté disponible.
Referencias
Dentro del motor de almacenamiento: limpieza fantasma en profundidad
Alertas
sp_add_alert (Transact-SQL)
DBCC TRACEOFF (Transact-SQL)
Marcas de seguimiento
Opciones de inicio del motor de base de datos