Paquete de SSIS no se ejecuta cuando se llama desde un paso de trabajo de agente de SQL Server

Seleccione idioma Seleccione idioma
Id. de artículo: 918760 - Ver los productos a los que se aplica este artículo
Si usted es un cliente de Small Business, encontrar adicionales de solución de problemas y una formación en el Soporte técnico para pequeñas empresas .
Expandir todo | Contraer todo

En esta página

Síntomas

Cuando se llama a un paquete de Microsoft SQL Server 2005 Integration Services (SSIS) de un paso de trabajo de agente de SQL Server, no se ejecuta el paquete SSIS. Sin embargo, si no se modifique el paquete SSIS, se ejecutará correctamente fuera de agente de SQL Server.

Solución

Para resolver este problema, utilice uno de los métodos siguientes. El método más adecuado depende de medio ambiente y la razón por la que el paquete produjo un error. Motivos por los que puede que haya fallado el paquete son los siguientes:
  • La cuenta de usuario que se utiliza para ejecutar el paquete con el agente de SQL Server difiere del autor del paquete original.
  • La cuenta de usuario no tiene los permisos necesarios para realizar conexiones o para tener acceso a recursos fuera del paquete SSIS.
El paquete puede no funcionar en las situaciones siguientes:
  • El usuario actual no puede descifrar los secretos del paquete. Esta situación puede ocurrir si la cuenta actual o la cuenta de ejecución difiere del autor del paquete original y establecida en ProtectionLevel del paquete permite descifrar los secretos en el paquete al usuario actual.
  • Una conexión de SQL Server que utiliza seguridad integrada se produce un error debido a que el usuario actual no tiene los permisos necesarios.
  • Acceso a los archivos se produce un error debido a que el usuario actual no tiene los permisos necesarios para escribir en el recurso compartido de archivos que tiene acceso connection manager. Por ejemplo, esta situación puede presentarse con los proveedores de registro de texto que no utilizan un inicio de sesión y una contraseña. Esta situación también puede presentarse con cualquier tarea que depende el Administrador de conexión de archivos, por ejemplo, una tarea de sistema de archivos SSIS.
  • Configuración de paquetes SSIS en función del registro utiliza las claves del Registro HKEY_CURRENT_USER. Las claves del Registro HKEY_CURRENT_USER son específicos del usuario.
  • Una tarea o un administrador de conexión requiere que la cuenta de usuario actual tiene los permisos correctos.
Método 1: Utilizar una cuenta de proxy de agente de SQL Server

Método 2: Establecer la propiedad ProtectionLevel de paquete de SSIS en ServerStorage

Método 3: Establecer la propiedad ProtectionLevel de paquete de SSIS en EncryptSensitiveWithPassword

Método 4: Los archivos de configuración de paquete de SSIS de uso

Método 5: Crear una plantilla de paquete

Estado

Este comportamiento es por diseño.

Información avanzada

Pasos para reproducir el problema

  1. Inicie sesión como un usuario que no sea parte del grupo de SQLServer2005SQLAgentUser. Por ejemplo, puede crear un usuario local.
  2. Cree un paquete SSIS y, a continuación, agregue una tarea de ExecuteSQL. Utilice un administrador de conexión OLE DB para el archivo de msdb local mediante el uso de la siguiente cadena: 'La autenticación de Windows' -SQLSourceType: "Entrada directa" -SQLStatement: "sp_who"
  3. Ejecute el paquete para asegurarse de que se ejecuta con éxito.
  4. Tenga en cuenta que la propiedad ProtectionLevel se establece en EncryptSensitiveWithPassword.
  5. Crear un trabajo del agente de SQL Server y un paso de trabajo. En el Ejecutar como Haga clic en Servicio de agente de SQL Server Para ejecutar el paso del trabajo.
El texto en el historial de trabajos del agente de SQL Server muestra información similar al siguiente:

Ejecutar como usuario: DOMINIO\nombre de usuario. Error en la ejecución del paquete. Error en el paso.

Descifrar los secretos de paquete

El valor predeterminado para el paquete SSIS propiedad ProtectionLevel es EncryptSensitiveWithUserKey. Cuando se guarda el paquete, SSIS cifra sólo las partes del paquete que contienen propiedades que están marcada como "confidenciales," por ejemplo, contraseñas, los nombres de usuario y las cadenas de conexión. Por lo tanto, cuando se vuelve a cargar el paquete, el usuario actual debe cumplir los requisitos de cifrado de las propiedades entre mayúsculas y minúsculas para descifrarse. Sin embargo, el usuario actual no tiene que satisfacer los requisitos de cifrado para cargar el paquete. Cuando ejecuta el paquete a través de un paso de trabajo de agente de SQL Server, la cuenta predeterminada es la cuenta de servicio de agente de SQL Server. La cuenta predeterminada es más probable es que un usuario distinto del autor del paquete. Por lo tanto, el paso de trabajo de agente de SQL Server puede cargar y comience a ejecutar el paso del trabajo, pero se produce un error en el paquete porque no se puede completar una conexión. Por ejemplo, el paquete no puede completar una conexión OLE DB o una conexión FTP. Se produce un error en el paquete porque no puede descifrar las credenciales que debe tener al conectar.

Importante Tenga en cuenta el proceso de desarrollo y el medio ambiente para determinar las cuentas que se necesitan y se utilizan en cada equipo. El valor de EncryptSensitiveWithUserKey de la propiedad ProtectionLevel es una configuración eficaz. Esta configuración no debe ser descontada debido a que hace que las complicaciones de implementación en un principio. Puede cifrar los paquetes cuando está conectado a la cuenta adecuada. También puede utilizar la utilidad de línea de comandos de SSIS de Dtutil.exe para cambiar los niveles de protección mediante el uso de un archivo .cmd y el subsistema de comando de agente de SQL Server. Por ejemplo, siga estos pasos. Debido a que puede utilizar la utilidad de Dtutil.exe en archivos por lotes y bucles, puede seguir estos pasos para varios paquetes al mismo tiempo.
  1. Modificar el paquete que desea cifrar mediante una contraseña.
  2. Use la utilidad de Dtutil.exe a través de un Sistema operativo (cmd Exec) Paso de trabajo de agente de SQL Server para cambiar la propiedad ProtectionLevel a EncryptSensitiveWithUserKey. Este proceso implica descifrar el paquete utilizando la contraseña y, a continuación, volver a cifrar el paquete. La clave de usuario que se utiliza para cifrar el paquete es el paso de trabajo de agente de SQL Server en elEjecutar como lista.

    Nota Dado que la clave incluye el nombre de usuario y el nombre del equipo, puede limitarse el efecto de mover los paquetes a otro equipo.

Asegúrese de que dispone de información de error acerca del error de paquete SSIS detallada

En lugar de basarse en los detalles limitados en el historial de trabajos del agente de SQL Server, puede utilizar SSIS registro para asegurarse de que tiene información de error acerca del error de paquete SSIS. También puede ejecutar el paquete mediante el comando de subsistema de exec en lugar del comando de subsistema SSIS.

Acerca del registro de SSIS

Los proveedores de registro y registro SSIS le permiten capturar detalles acerca de la ejecución del paquete y errores. De forma predeterminada, el paquete no registra información. Debe configurar el paquete para registrar información. Cuando configure el paquete para registrar la información, se mostrará información detallada que se parece al siguiente. En este caso, sabrá que es un problema de permisos:

OnError, nombre de dominio, nombreDeDominio\nombreDeUsuario, FTP Task,{C73DE41C-D0A6-450A-BB94-DF6D913797A1},{2F0AF5AF-2FFD-4928-88EE-1B58EB431D74},4/28/2006 1: 51: 59 PM, 4/28/2006: 1: 51: 59 PM,-1073573489, 0 x, no se puede conectar a servidor FTP con "FTP Connection Manager".

OnError, nombre de dominio, nombreDeDominio\nombreDeUsuario, Execute SQL Task,{C6C7286D-57D4-4490-B12D-AC9867AE5762},{F5761A49-F2F9-4575-9E2B-B3D381D6E1F3},4/28/2006 4: 07: 00 P.M., 4/28/2006: 4: 07: 00 PM,-1073573396, 0 x, no se pudo establecer conexión "user01.msdb". Conexión no esté configurado correctamente o no puede tener los permisos adecuados en esta conexión.

Acerca del comando de subsistema de exec y mostrar la información de

Al usar el método de comando de subsistema de exec, agregar modificadores de registro a la línea de comandos SSIS para llamar al archivo ejecutable de línea de comandos de SSIS de Dtexec.exe de consola detallado. Además, utilizar la función de trabajo avanzadas del archivo de salida. También puede utilizar el Incluir salida de paso en el historial opción para redirigir la información de registro en un archivo o en el historial de trabajos del agente de SQL Server.

El siguiente es un ejemplo de una línea de comandos:

dtexec.exe /FILE 
"C:\_work\SSISPackages\ProtectionLevelTest\ProtectionLevelTest\AgentTesting.dtsx" /MAXCONCURRENT " -1 
" /CHECKPOINTING OFF  /REPORTING V  /CONSOLELOG NCOSGXMT


El registro de /console Devuelve detalles similares a los siguientes:

Error: 2006-04-27 18:13:34.76
   Code: 0xC0202009
   Source: AgentTesting Connection manager "(local).msdb"
   Description: An OLE DB error has occurred. Error code: 0x80040E4D.
An OLE DB record is available.  Source: "Microsoft SQL Native Client"  Hresult: 0x80040E4D  Description: "Login failed for user 'DOMAINNAME\username'.".
End Error


Error: 2006-04-28 13:51:59.19
   Code: 0xC0016016
   Source:  
   Description: Failed to decrypt protected XML node "DTS:Property" with error 0x80070002 "The system cannot find the file specified.". You may not be authorized to access this information. This error occurs when there is a cryptographic error. Verify that the correct key is available.
End Error


Log:
     Name: OnError
     Computer: COMPUTERNAME
     Operator: DOMAINNAME\username
     Source Name: Execute SQL Task
     Source GUID: {C6C7286D-57D4-4490-B12D-AC9867AE5762}
     Execution GUID: {7AFE3D9E-5F73-42F0-86FE-5EFE264119C8}
     Message: Failed to acquire connection "(local).msdb". Connection may not be configured correctly or you may not have the right permissions on this connection.
     Start Time: 2006-04-27 18:13:34
     End Time: 2006-04-27 18:13:34
End Log

Referencias

Para obtener más información acerca de un problema similar, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
904800Recibe un mensaje de error "Error al cargar" cuando intenta ejecutar un paquete de SQL Server 2005 Integration Services en SQL Server 2005
Para obtener más información acerca de cómo emplear la utilidad de Dtutil.exe en las operaciones por lotes, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
906562Cómo utilizar la utilidad dtutil (Dtutil.exe) para establecer el nivel de protección de un lote de los paquetes de SQL Server Integration Services (SSIS) en SQL Server 2005
Para obtener más información acerca de cómo crear plantillas de paquetes, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
908018Cómo crear una plantilla de paquete en SQL Server Business Intelligence Development Studio


Para obtener más información acerca de la seguridad de los paquetes SSIS y la propiedad ProtectionLevel , vea el tema "Consideraciones de seguridad para Integration Services" en los libros en pantalla de SQL Server 2005.

Por desgracia, los usuarios no son conscientes de que predeterminados de paso de trabajo de agente coloquen en este estado. Para obtener más información acerca de los servidores proxy de agente de SQL Server y SSIS, vea los temas siguientes en los libros en pantalla de SQL Server 2005:
  • Programar la ejecución del paquete en SQL Server Agent
  • Creación de servidores proxy de agente de SQL Server

Propiedades

Id. de artículo: 918760 - Última revisión: lunes, 03 de diciembre de 2012 - Versión: 3.0
La información de este artículo se refiere a:
  • Microsoft SQL Server 2008 Service Pack 1
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2005 Service Pack 3
  • Microsoft SQL Server 2005 Service Pack 2
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
Palabras clave: 
kbsqlsetup kbprb kbsql2005ssis kbsql2005setup kbexpertiseinter kbexpertiseadvanced kbtshoot kbmt KB918760 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): 918760

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