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

Template: CPR – SQL Server 2008 CU individual hotfix

Error: #50003826 (revisión SQL)

BUG #: 102328 (Content Maintenance)BUG #: 50003826 (SQL Hotfix)

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 1Attempt para obtener la 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íneano 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.col2from #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 Paquete de actualización acumulativa 3 para SQL Server 2008Nota: 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. Si desea 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 del lanzamiento de SQL Server 2008Despué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 enumerados en la sección "Se aplica 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 ver el artículo de Microsoft Knowledge Base:

960484 Paquete de actualización acumulativa 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 regla

Título de regla

Identificador de regla

Regla BPA de SQL Server 2008 R2

errores de tempdb corregirán o falta el indicador de traza

RID3808

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:

957826 Dónde encontrar información acerca de la más reciente de SQL Server genera

Call stack information

6338c88c 02ab0ed6 kernel32!RaiseException+0x53
6338c8d8 026b607e sqlservr!CDmpDump::Dump+0x95
6338c910 026b6a49 sqlservr!SQLDumperLibraryInvoke+0x174
6338ca0c 026ae00a sqlservr!CImageHelper::DoMiniDump+0x29d
6338d7bc 026ae713 sqlservr!stackTrace+0x643
6338d7dc 0175ec9e sqlservr!stackTraceCallBack+0x40
6338da74 01222ecb sqlservr!ex_raise2+0x1c6
6338daa0 024b7fb9 sqlservr!ex_raise+0x64
6338dbe8 016dc45c sqlservr!RaiseWrongPageError+0xa7
6338dc54 01006a2e sqlservr!FixPageNotThruLinkage+0x2a5
6338dce0 01006db6 sqlservr!HeapPageManager::GetNextPage+0x185
6338e4a8 015307fd sqlservr!HeapDataSetSession::GetNextRowValuesInternal+0x4df
6338e4f8 015306cc sqlservr!RowsetNewSS::FetchNextRow+0x126
6338e524 01530882 sqlservr!CQScanRowsetNew::GetRowWithPrefetch+0x2b
6338e548 01530182 sqlservr!CQScanTableScanNew::GetRow+0x80
6338e568 015336a5 sqlservr!CQScanHash::ReadRow+0xe9
6338e5ac 01558b24 sqlservr!CQScanHash::ConsumeBuild+0x2bf

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 Compilaciones de SQL Server 2008 que se publicaron después del lanzamiento de SQL Server 2008Para 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 desde el equipo de SQL Server para entregar revisiones para problemas detectadosPara 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:

822499Nuevo esquema de nomenclatura para los paquetes de actualización de software de Microsoft SQL ServerPara 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 utilizada para describir las actualizaciones de software de Microsoft

Author (SME): bruceye
Writer: ericzha
Tech Reviewer: bruceye; wcarroll
Editor: v-janhal

¿Necesita más ayuda?

Ampliar sus conocimientos
Explorar los cursos
Obtener nuevas características primero
Unirse a Microsoft Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×