KB934458 CORRECCIÓN: Las tareas Comprobar integridad de base de datos y Ejecutar instrucción T-SQL de un plan de mantenimiento podían perder el contexto de la base de datos en determinadas circunstancias en SQL Server compilaciones 2005 3042 a 3053

Se aplica a
Microsoft SQL Server 2005 Developer Edition Microsoft SQL Server 2005 Enterprise Edition Microsoft SQL Server 2005 Enterprise X64 Edition Microsoft SQL Server 2005 Standard Edition Microsoft SQL Server 2005 Standard X64 Edition

Error #: 50001012 (SQL Hotfix)

Síntomas

En Microsoft SQL Server 2005 Service Pack 2 (SP2), las siguientes tareas de un plan de mantenimiento pueden perder contexto de base de datos en determinadas circunstancias:

  • Comprobar la integridad de la base de datos
  • Ejecutar instrucción T-SQL

Por ejemplo, si una tarea Comprobar la integridad de la base de datos está configurada para comprobar la integridad de varias bases de datos, la tarea comprueba repetidamente la base de datos predeterminada.

Para la tarea Ejecutar instrucción T-SQL, este problema se produce si se cumplen las siguientes condiciones:

  • La tarea Ejecutar instrucción T-SQL contiene varios lotes.

  • Los lotes se separan mediante la instrucción GO.

  • Ningún lote utiliza la instrucción USE para especificar la base de datos.

  • Las instrucciones de cada lote no contienen el nombre de la base de datos.

En este escenario, las instrucciones del segundo lote y de los siguientes lotes se ejecutarán en la base de datos predeterminada.

Nota: Puede confirmar que este problema se ha producido mediante SQL Server Profiler. Al realizar un seguimiento de la ejecución del plan de mantenimiento, consulte la columna Base de datos en SQL Server Profiler.

Resolución

Este problema se produce en las compilaciones 3042 a 3053 de SQL Server 2005 y en las compilaciones 3150 a 3158 de SQL Server 2005. Si está ejecutando una compilación de SQL Server 2005 SP2 entre 3042 y 3053, descargue e instale la siguiente actualización crítica desde el Centro de descarga de Microsoft.

Para obtener el paquete independiente de esta actualización, vaya al sitio web del Catálogo de Microsoft Update.

Después de instalar esta actualización crítica, la compilación de SQL Server 2005 es 3054.

Para obtener más información sobre cómo descargar archivos de soporte técnico de Microsoft, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

119591 Cómo obtener archivos de soporte técnico de Microsoft desde servicios en línea Microsoft examinó este archivo en busca de virus. Microsoft usó el software de detección de virus más reciente que había disponible en la fecha en la que se publicó el archivo. El archivo está guardado en servidores de seguridad mejorada que ayudan a prevenir cambios no autorizados del archivo.

Información de archivo

La versión en inglés de esta actualización crítica tiene los atributos de archivo enumerados en la siguiente tabla, u otros posteriores. Las fechas y horas de estos archivos se expresan de acuerdo con la hora universal coordinada (UTC). La información del archivo se convertirá a la hora local cuando la vea. Para conocer la diferencia entre la hora UTC y la hora local, use la pestaña Zona horaria del elemento Fecha y hora del Panel de control.

SQL Server 2005, versión de 32 bits

Nombre de archivo File version Tamaño de archivo Fecha Hora Plataforma
Microsoft.sqlserver.maintenanceplantasks.dll 9.0.3054.0 296,304 23 de marzo de 2007 2,113 x86
Sqlaccess.dll 2005.90.3054.0 350,576 23 de marzo de 2007 2,113 x86
Sqlservr.exe 2005.90.3054.0 29,181,808 23 de marzo de 2007 2,113 x86

SQL Server 2005, versión basada en x64

Nombre de archivo File version Tamaño de archivo Fecha Hora Plataforma
Microsoft.sqlserver.maintenanceplantasks.dll 9.0.3054.0 296,304 23 de marzo de 2007 2,113 x86
Sqlaccess.dll 2005.90.3054.0 357,744 24 de marzo de 2007 02:40 x86
Sqlservr.exe 2005.90.3054.0 38,516,080 24 de marzo de 2007 02:40 x64

SQL Server 2005, versión basada en Itanium

Nombre de archivo File version Tamaño de archivo Fecha Hora Plataforma
Microsoft.sqlserver.maintenanceplantasks.dll 9.0.3054.0 296,304 23 de marzo de 2007 2,113 x86
Sqlaccess.dll 2005.90.3054.0 352,112 24 de marzo de 2007 03:59 x86
Sqlservr.exe 2005.90.3054.0 72,583,024 24 de marzo de 2007 03:59 IA64

Si está ejecutando cualquier compilación de SQL Server 2005 SP2 entre 3150 y 3158, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

934459 CORRECCIÓN: Las tareas Comprobar integridad de la base de datos y Ejecutar instrucción T-SQL de un plan de mantenimiento pueden perder el contexto de la base de datos en determinadas circunstancias en SQL Server compilaciones 2005 3150 a 3158
 Para obtener esta actualización crítica de forma automatizada, visite el siguiente sitio Web de Microsoft Update:

https://update.microsoft.comDespués de instalar esta actualización crítica, la compilación de SQL Server 2005 es 3161.

Para obtener más información acerca de cómo determinar la versión y edición de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

321185 Cómo identificar la versión y la edición del SQL Server
 

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

En la versión de lanzamiento original de SQL Server 2005 SP2 y versiones anteriores, los comandos relacionados con las tareas del plan de mantenimiento se acumulan y ejecutan al mismo tiempo. Cuando se produce un error, las tareas ya no se ejecutan y el resto de las tareas de mantenimiento no se realizan. En SQL Server 2005 SP2, los lotes individuales se envían de uno en uno. En la versión de lanzamiento original de SQL Server 2005 SP2, la conexión de base de datos se restableció entre lotes. Los lotes posteriores se dejaron en el contexto de la base de datos predeterminada en lugar de en el contexto que estaba presente antes de que se ejecutara la instrucción GO. Las tareas afectadas dependían del contexto que estaba presente antes de que se ejecutara la instrucción GO, específicamente la tarea Comprobar integridad de la base de datos y la tarea Ejecutar instrucción T-SQL.