REVISIÓN: Recibe el error 605 y error 824 al ejecutar una consulta que inserta datos en una tabla temporal en SQL Server

Error: #50003826 (revisión SQL)
Microsoft distribuye correcciones de Microsoft SQL Server 2008 como un archivo descargable. Como las revisiones son acumulativas, cada versión nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008.

Síntomas

En SQL Server 2008, ejecute una consulta que inserta datos en una tabla temporal. La instrucción insert contiene una subconsulta que hace referencia a la misma tabla temporal. Cuando ejecuta la consulta, puede recibir un mensaje de error similar al siguiente:
Msj 605, nivel 21, estado 3, línea 1

Intento de recuperación página lógica (1:225) en la base de datos 2 error. Pertenece a 281474980315136 de unidad de asignación no a 504403158513025024.

Si ejecuta la consulta otra vez, recibirá un mensaje de error similar al siguiente:

Msj 824, nivel 24, estado 2, línea 1
SQL Server detecta un error de E/S basado en la coherencia lógico: suma de comprobación incorrecta (se esperaba: 0x50758180; real: 0x15658bfc). Se produjo durante una lectura de página (1:336) en la base de datos ID 2 en el desplazamiento 0x000000002a0000 en el archivo ' C:\Program Files\Microsoft SQL Server\MSSQL10. SQL2008\MSSQL\DATA\tempdb.mdf'. Mensajes adicionales en el registro de sucesos de sistema o registro de error de SQL Server 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. Completar una comprobación de coherencia de base de datos completa (DBCC CHECKDB). Este error puede deberse a varios factores; Para obtener más información, consulte los libros en pantalla de SQL Server.
En algunos casos, puede aparecer también un mensaje de error similar al siguiente:
Msg 601, nivel 12, estado 3, procedimiento pnombre rocedure, Line número de línea
No se puede continuar la exploración con NOLOCK debido al movimiento de datos.

Una construcción de consulta posibles que puede producir estos errores es como sigue:
insert #table1select s.col1, s.col2
from #table2 s inner loop join #table1 t
on s.col3 = t.col3

Solución

En primer lugar, la corrección para este problema se publicó en actualización acumulativa 3. Para obtener más información acerca de cómo obtener este paquete de actualización acumulativa para SQL Server 2008, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
960484 acum actualizar paquete 3 para SQL Server 2008
Nota: Como las compilaciones son acumulativas, cada versión de corrección nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008. Le recomendamos que considere aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:
956909 the SQL Server 2008 generaciones que se publicaron después del lanzamiento de SQL Server 2008
Después de instalar este paquete de actualización acumulativa, deberá habilitar el indicador de traza 4135. Para ello, puede agregar la -T4135 parámetro de inicio. O bien, puede utilizar la instrucción dbcc traceon(4135) para una sesión específica.

Solución alternativa

Para evitar este problema, agregue una columna que tiene una clave principal agrupada y una propiedad de identidad para la tabla temporal. Por ejemplo, ejecute la instrucción siguiente para cambiar la tabla temporal:
ALTER TABLE #TempTableADD 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 aparece el mensaje de error 824 o 605, la base de datos no está dañado. Además, estos mensajes de error hacer referencia a páginas de la base de datos tempdb.

Para obtener más información acerca de qué archivos se cambian y para obtener información acerca de los requisitos previos para aplicar el paquete de actualización acumulativa 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 acum actualizar paquete 3 para SQL Server 2008

Información de SQL Server 2008 R2 BPA

SQL Server 2008 R2 Best Practices Analyzer (BPA, SQL Server 2008 R2) proporciona una regla para detectar situaciones en que no tiene la actualización acumulativa o el indicador de traza habilitado para tratar este problema. El BPA de SQL Server 2008 R2 es compatible con SQL Server 2008 y SQL Server 2008 R2.

Si ejecuta la herramienta BPA y encontrar un "Database Engine - tempdb errores corregirán o falta el indicador de traza" advertencia, se debe comprobar la versión de SQL Server y los indicadores de traza que están configurados para habilitar esta corrección.

Referencias

Software de reglaTítulo de la reglaIdentificador de regla
Regla BPA de SQL Server 2008 R2errores de tempdb corregirán o falta el indicador de trazaRID3808

Nota: Puede habilitar el indicador de traza 4135 o el indicador de traza 4199 para habilitar esta corrección. El indicador de traza 4135 se introdujo en el paquete de actualización acumulativa 3 para SQL Server 2008. El indicador de traza 4135 también está disponible en SQL Server 2008 Service Pack 1, Service Pack 2 de SQL Server 2008 y en SQL Server 2008 R2. El indicador de traza 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 de SQL Server 2008 R2. Para obtener más información sobre el indicador de traza 4199, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
 974006 indicador de traza 4199 se agrega al control de cambios del optimizador de consultas múltiples realizados previamente en varios indicadores de traza
Dado que la corrección para este problema implica una combinación de una compilación de revisión específico y un indicador de traza para habilitar la corrección, vamos a incluir en la tabla siguiente para mostrar los diferentes escenarios y la acción recomendada para que tome para cada escenario.



Para obtener más información acerca de las últimas versiones de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
Compilaciones de 957826 dónde encontrar información acerca de la más reciente de SQL Server

Referencias

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

956909 the SQL Server 2008 generaciones que se publicaron después del lanzamiento de SQL Server 2008

Para obtener más información sobre el modelo de servicio Incremental de 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 para 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 para los paquetes de actualización de software de Microsoft SQL Server
Para obtener más información acerca de la terminología de la actualización de software, 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 utiliza para describir las actualizaciones de software de Microsoft
Propiedades

Id. de artículo: 960770 - Última revisión: 13 ene. 2017 - Revisión: 1

Comentarios