REVISIÓN: Cuando ejecuta una secuencia de comandos de Transact-SQL en un paso de un trabajo del Agente SQL Server en SQL Server 2005 o en SQL Server 2008, el resultado de la secuencia de comandos de Transact-SQL se puede truncar

Seleccione idioma Seleccione idioma
Id. de artículo: 955695 - Ver los productos a los que se aplica este artículo
Importante Este artículo contiene información acerca de cómo modificar el registro. Asegúrese de que copia el registro antes de modificarlo. Asegúrese de que sabe cómo restaurarlo si surge algún problema. Para obtener más información acerca de cómo hacer copia de seguridad, restaurar y modificar el registro, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
322756 Cómo hacer copia de seguridad y restaurar el registro de Windows
Microsoft distribuye correcciones de Microsoft SQL Server 2005 como un archivo descargable. Debido a que 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 versión anterior de SQL Server 2005.
Expandir todo | Contraer todo

En esta página

Síntomas

Considere el siguiente escenario.
  • En Microsoft SQL Server 2005 o en SQL Server 2008, ejecutar una secuencia de comandos de Transact-SQL en un paso en un trabajo del Agente SQL Server.
  • En el paso, la primera instrucción devuelve un mensaje de error.
  • Las instrucciones posteriores también devuelven uno o más mensajes de error.
En este escenario, al ejecutar el trabajo del Agente SQL Server, es posible que no se procesan las instrucciones posteriores y que el paso devuelve incorrectamente el estado de éxito. Se truncan los resultados de las instrucciones posteriores.

Causa

Agente de SQL Server 2005 utiliza el controlador de SQL Native Client (Sqlncli.dll) para conectarse a la instancia de SQL Server 2005. Agente de SQL Server 2000 utiliza el controlador ODBC de SQL Server (Sqlsrv32.dll) para conectarse a Microsoft SQL Server 2000. Un cambio en el símbolo de error de datos tabulares (TDS) de la secuencia que se devuelve desde SQL Server a Agente SQL Server produce una diferencia de comportamiento entre los dos controladores. Como resultado, la diferencia de comportamiento entre las dos versiones del Agente SQL Server.

Solución

SQL Server 2005

La corrección para este problema se publicó en primer lugar en la actualización acumulativa 9. Para obtener más información acerca de cómo obtener este paquete de actualización acumulativa para SQL Server 2005 Service Pack 2, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
953752 9 De paquete de actualización acumulativa para SQL Server 2005 Service Pack 2
Nota Como las generaciones son acumulativas, cada nueva versión de revisión contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la versión anterior de SQL Server 2005. Microsoft recomienda que considere la posibilidad de aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
937137 Compilaciones de SQL Server 2005 que se publicaron después del lanzamiento de SQL Server 2005 Service Pack 2
Las revisiones de Microsoft SQL Server 2005 se crean para determinados service Pack de SQL Server. Debe aplicar una revisión de SQL Server 2005 Service Pack 2 para una instalación de SQL Server 2005 Service Pack 2. De forma predeterminada, cualquier hotfix suministrada en un service pack de SQL Server se incluye en el siguiente service pack de SQL Server.

SQL Server 2008

La corrección para este problema se incorpora a la versiom RTM de SQL Server 2008. Sin embargo, para habilitar la revisión, aún tendrá que realizar los cambios del registro que se describen en la sección "Más información".

Solución

Para evitar este problema, agregue una instrucción SELECT ficticia como la primera instrucción en el paso.

Estado

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

Más información

Advertencia Pueden producirse problemas graves si modifica incorrectamente el registro mediante el Editor del registro o mediante cualquier otro método. Estos problemas pueden requerir que reinstale el sistema operativo. Microsoft no puede garantizar que se puedan resolver estos problemas. Modificar el registro bajo su responsabilidad.
Para habilitar esta revisión, debe crear la siguiente entrada del registro y establecer esta entrada del registro en 0:
HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\<mssql.x>\SQLServerAgent\TruncateJobResultOnError<b00></b00></mssql.x>

Nota En esta entrada del registro, <mssql.x></mssql.x>representa el identificador de la instancia de SQL Server. Debe cambiar al valor correcto para la instancia.

Si desea deshabilitar esta revisión, establezca la entrada de registro TruncateJobResultOnError en 1.

Pasos para reproducir este problema.

  1. Crear un procedimiento almacenado extendido. Por ejemplo, crear en el ejemplo de procedimiento almacenado denominado xp_hello extendido.
  2. Cree un trabajo del Agente SQL Server y, a continuación, agregue las siguientes instrucciones en un paso del trabajo del Agente SQL Server:
    declare @txt int
    exec xp_hello @txt OUTPUT
    RAISERROR('One or more operations failed to complete.', 16, 1)
    
  3. Ejecute el trabajo del Agente SQL Server.
Cuando el xp_hello había extendido el procedimiento almacenado devuelve un error de nivel de gravedad 1 y la entrada de registro TruncateJobResultOnError se establece en 0, el paso de trabajo se marca como errónea. Los resultados de la xp_hello extendido el procedimiento almacenado y la instrucción RAISERROR se capturan en el historial del trabajo. Al revisar el historial del trabajo, verá que el nivel de gravedad de los pasos es 16.

Cuando el xp_hello había extendido el procedimiento almacenado devuelve un error de nivel de gravedad 1 y la entrada de registro TruncateJobResultOnError se establece en 1, el paso de trabajo se marca como un éxito. Sólo el resultado de la xp_hello el procedimiento almacenado extendido se captura en la historia del trabajo. Se trunca el resultado de la instrucción RAISERROR. Al revisar el historial del trabajo, encontrará que el nivel de gravedad de los pasos es 1.

Cuando el xp_hello había extendido el procedimiento almacenado devuelve un error de nivel de gravedad 11 y la entrada de registro TruncateJobResultOnError se establece en 0, el paso de trabajo se marca como errónea. Los resultados de la xp_hello el procedimiento almacenado extendido y la instrucción RAISERROR se capturan en el historial del trabajo. Al revisar el historial del trabajo, verá que el nivel de gravedad de los pasos es 16.

Cuando el xp_hello había extendido el procedimiento almacenado devuelve un error de nivel de gravedad 11 y la entrada de registro TruncateJobResultOnError se establece en 1, el paso de trabajo se marca como errónea. Sólo el resultado de la xp_hello el procedimiento almacenado extendido se captura en el historial del trabajo. Se trunca el resultado de la instrucción RAISERROR. Al revisar el historial del trabajo, verá que el nivel de gravedad de los pasos es 11.

Para obtener más información acerca de la diferencia en el nivel de gravedad de mensajes de error, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
309802REVISIÓN: Una llamada a una instrucción RAISERROR en un lote de Transact-SQL puede causar un trabajo SQLAgent errores y pérdida de datos de salida en SQL Server
903086 REVISIÓN: El trabajo por lotes deja de ejecutarse, y la salida de trabajo se trunca al ejecutar una secuencia de comandos de Transact-SQL como un trabajo de Agente SQL Server en SQL Server 2000
Para obtener más información acerca de qué archivos se cambian y para obtener información acerca de cualquier requisito previo 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:
953752 9 De paquete de actualización acumulativa para SQL Server 2005 Service Pack 2

Referencias

Para obtener más información acerca de la lista de compilaciones disponibles después de Service Pack 2 de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
937137 Compilaciones de SQL Server 2005 que se publicaron después del lanzamiento de SQL Server 2005 Service Pack 2
Para obtener más información sobre el 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 problemas detectados
Para obtener más información acerca de cómo obtener el Service Pack 2 de SQL Server 2005, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
913089 Cómo obtener el service pack más reciente para SQL Server 2005
Para obtener más información acerca de las nuevas características y mejoras de SQL Server 2005 Service Pack 2, visite el siguiente sitio Web de Microsoft:
¿http://go.Microsoft.com/fwlink/?LinkId = 71711
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: 955695 - Última revisión: jueves, 16 de junio de 2011 - Versión: 1.0
La información de este artículo se refiere a:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Standard
Palabras clave: 
kbsql2005tool kbfix kbpubtypekc kbqfe kbexpertiseadvanced kbmt KB955695 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 955695

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com