KB960770 - CORRECCIÓN: Recibe el error 605 y el error 824 cuando ejecuta una consulta que inserta datos en una tabla temporal en SQL Server

Se aplica a
SQL Server 2008 Service Pack 3

Error: #50003826 (SQL Hotfix)

Microsoft distribuye las correcciones de Microsoft SQL Server 2008 como un archivo descargable. Dado que las correcciones son acumulativas, cada nueva versión contiene todas las revisiones y correcciones de seguridad que se incluyeron con la versión de corrección de SQL Server 2008 anterior.

Síntomas

En SQL Server 2008, ejecuta una consulta que inserta datos en una tabla temporal. La instrucción insert contiene una subconsulta que hace referencia a la misma tabla temporal. Al ejecutar la consulta, puede recibir un mensaje de error similar al siguiente:

Nota

Mensaje 605, Nivel 21, Estado 3, Línea 1

El intento de capturar la página lógica (1:225) en la base de datos 2 ha fallado. Pertenece a la unidad de asignación 281474980315136 no a 504403158513025024.

Si vuelve a ejecutar la consulta, recibirá un mensaje de error similar al siguiente:

Nota

        

  • Mensaje 824, Nivel 24, Estado 2, Línea 1
  • SQL Server detectado un error de E/S basado en coherencia lógica: suma de comprobación incorrecta (esperada: 0x50758180; real: 0x15658bfc). Ocurrió durante una lectura de página (1:336) en el ID de base de datos 2 en el 0x000000002a0000 de desplazamiento en el archivo 'C:\Program Files\Microsoft SQL Server\MSSQL10. SQL2008\MSSQL\DATA\tempdb.mdf'. Los mensajes adicionales en el registro de errores de SQL Server o en el registro de eventos del sistema pueden proporcionar más detalles. Se trata de una condición de error grave que amenaza la integridad de la base de datos y debe corregirse inmediatamente. Complete una comprobación completa de la coherencia de la base de datos (DBCC CHECKDB). Este error puede deberse a muchos factores; Para obtener más información, consulte Libros en pantalla de SQL Server.

En algunos casos, también puede recibir un mensaje de error similar al siguiente:

Nota

Msj 601, Nivel 12, Estado 3, Nombre del procedimiento deprocedimiento, Número de línea de línea
No se pudo continuar el examen con NOLOCK debido a un movimiento de datos.

A continuación se puede crear una posible construcción de consulta que puede generar estos errores:

insert #table1
select s.col1, s.col2
from #table2 s inner loop join #table1 t 
on s.col3 = t.col3 

      

Resolución

La corrección de este problema se publicó por primera vez en la actualización acumulativa 3. Para obtener más información acerca de cómo obtener este paquete de actualizaciones acumulativas para SQL Server 2008, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

960484 paquete de actualización acumulativa 3 para SQL Server 2008Nota Dado que las compilaciones son acumulativas, cada nueva versión de corrección contiene todas las revisiones y correcciones de seguridad que se incluyeron con la versión de corrección anterior de SQL Server 2008. Recomendamos que se plantee la posibilidad de aplicar la versión de corrección más reciente que contiene esta revisión. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

956909 Compilaciones de SQL Server 2008 que se publicaron después de SQL Server de 2008Después de instalar este paquete de actualizaciones acumulativas, debe habilitar la marca de seguimiento 4135. Para ello, puede agregar el parámetro de inicio -T4135. O bien, puede usar la instrucción dbcc traceon(4135) para una sesión específica.

Solución alternativa

Para solucionar este problema, agregue a la tabla temporal una columna que tenga una clave principal agrupada y una propiedad de identidad. Por ejemplo, ejecute la siguiente instrucción para cambiar la tabla temporal:

ALTER TABLE #TempTable
ADD id integer IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".

Más información

Aunque encuentre el mensaje de error 824 o 605, la base de datos no se daña. Además, estos mensajes de error hacen referencia a páginas de la base de datos tempdb.

Para obtener más información acerca de los archivos modificados y los requisitos previos para aplicar el paquete de actualizaciones acumulativas que contiene la revisión que se describe en este artículo de Microsoft Knowledge Base, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

960484 paquete de actualización acumulativa 3 para SQL Server 2008

Información BPA de SQL Server 2008 R2

El Analizador de procedimientos recomendados de SQL Server 2008 R2 (SQL Server 2008 R2 BPA) proporciona una regla para detectar situaciones en las que no tiene habilitada la actualización acumulativa o la marca de seguimiento para solucionar este problema. El BPA de SQL Server 2008 R2 admite tanto SQL Server 2008 como SQL Server 2008 R2.

Si ejecuta la herramienta BPA y encuentra una advertencia "Motor de base de datos: error de tempdb, corrección o falta la marca de seguimiento", debe comprobar la versión de SQL Server y las marcas de seguimiento configuradas para habilitar esta corrección.

Referencias

Software de regla Título de regla Identificador de regla
Regla BPA de SQL Server 2008 R2 Errores de TempDB Corregir o rastrear la marca que falta RID3808

Nota: Puede habilitar la marca de seguimiento 4135 o la marca de seguimiento 4199 para habilitar esta corrección. La marca de seguimiento 4135 se introdujo en el paquete de actualización acumulativa 3 para SQL Server 2008. La marca de seguimiento 4135 también está disponible en SQL Server 2008 Service Pack 1, en SQL Server 2008 Service Pack 2 y en SQL Server 2008 R2. La marca de seguimiento 4199 se introdujo en el paquete de actualización acumulativa 7 para SQL Server 2008, en el paquete de actualización acumulativa 7 para SQL Server 2008 Service Pack 1 y en el paquete de actualización acumulativa 1 para SQL Server 2008 R2. Para obtener más información sobre la marca de seguimiento 4199, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

974006 marca de seguimiento 4199 se agrega para controlar varios cambios del optimizador de consultas realizados anteriormente con varias marcas de seguimiento Dado que la solución para este problema implica una combinación de una compilación de revisión específica y una marca de seguimiento para habilitar la corrección, incluimos la siguiente tabla para mostrar los distintos escenarios y la acción recomendada que debe realizar en cada escenario.

Recomendaciones de actualización de la marca de compilación y seguimiento de SQL Server

  Para obtener más información acerca de las compilaciones más recientes de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

957826 Dónde encontrar información sobre las últimas compilaciones SQL Server

Referencias

Para obtener más información acerca de la lista de compilaciones que están disponibles tras el lanzamiento de SQL Server 2008, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

956909 Compilaciones de SQL Server 2008 se publicaron después de SQL Server 2008

Para obtener más información acerca del modelo de servicio incremental para SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

935897 Un modelo de servicio incremental está disponible en el equipo de SQL Server para entregar revisiones para problemas detectados

Para obtener más información acerca del esquema de nomenclatura de las actualizaciones de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

822499 Nuevo esquema de nomenclatura de los paquetes de actualizaciones de software de Microsoft SQL Server Para obtener más información acerca de la terminología relativa a las actualizaciones de software de Microsoft, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

824684 Descripción de la terminología estándar que se usa para describir las actualizaciones de software de Microsoft