none
error en la ejecución de un paquete SSIS RRS feed

  • Pregunta

  • Hola a todos, tengo el siguiente problema, resulta que cree un paquete SSIS y al ejecutarlo en forma directa este funciona perfectamente, pero cuando lo quiero ejecutar desde un trabajo programado desde el agente SQL server, me muestra el siguiente error:
    Mensaje
    Ejecutado como usuario: NT Service\SQLSERVERAGENT. Utilidad de ejecución de paquetes de Microsoft (R) SQL Server  Version 12.0.2000.8 for 64-bit  Copyright (C) Microsoft Corporation. Todos los derechos reservados.    Iniciado: 16:24:00  Error: 2016-03-15 16:24:00.97     Código: 0xC0011007     Origen: {B94C7D36-9FC3-4C0B-AEF5-D3FBF83EBC1E}      Descripción: No se puede cargar el paquete como XML porque no tiene un formato XML válido. Se expondrá un error del analizador XML específico.  Fin de error  Error: 2016-03-15 16:24:00.97     Código: 0xC0011002     Origen: {B94C7D36-9FC3-4C0B-AEF5-D3FBF83EBC1E}      Descripción: No se pudo abrir el archivo de paquete "C:\Users\camilo\Documents\SSISDB\IMPORTA_ESTADOS1.dtsx" debido al error 0x80070005 "Acceso denegado.". Esto sucede si se carga un paquete y no es posible abrir o cargar correctamente el archivo en el documento XML. Puede que se haya proporcionado un nombre de archivo incorrecto al llamar a LoadPackage o que el archivo XML especificado tenga un formato incorrecto.  Fin de error  No se pudo cargar el paquete "C:\Users\camilo\Documents\SSISDB\IMPORTA_ESTADOS1.dtsx" debido al error 0xC0011002.  Descripción: No se pudo abrir el archivo de paquete "C:\Users\camilo\Documents\SSISDB\IMPORTA_ESTADOS1.dtsx" debido al error 0x80070005 "Acceso denegado.". Esto sucede si se carga un paquete y no es posible abrir o cargar correctamente el archivo en el documento XML. Puede que se haya proporcionado un nombre de archivo incorrecto al llamar a LoadPackage o que el archivo XML especificado tenga un formato incorrecto.  Origen: {B94C7D36-9FC3-4C0B-AEF5-D3FBF83EBC1E}  Iniciado: 16:24:00  Finalizado: 16:24:00  Transcurrido:  0.016 segundos.  No se pudo encontrar el paquete.  No se pudo realizar el paso.

    Tampoco me deja ejecutarlo con  DTEXEC, tambien me mustra el mismo error:
     Descripción: No se puede cargar el paquete como XML porque no tiene un formato XML válido. Se expondrá un error del analizador XML específico.

    Alguien me puede indicar que error estoy cometiendo.
    desde ya muchas gracias.
    martes, 15 de marzo de 2016 19:35

Todas las respuestas

  • "C:\Users\camilo\Documents\[...]" [...] "Acceso denegado."

    Fíjate en la ruta que le has puesto. Está dentro de una carpeta de usuario, que normalmente y de forma predeterminada no tiene permiso de acceso para nadie más que para el usuario al que pertenece la carpeta.

    Cuando ejecutas el paquete con el Agente, se ejecuta con la cuenta de servicio del Agente, que lo más normal es que no tenga permiso de acceso a C:\users\camilo. Mueve el paquete a una carpeta adecuada que tenga permisos suficientes. Lo ideal sería instalarlo en la carpeta predefinida que tiene para ello SQL Server, o dejarle que lo instale en msdb y que el Agente lo ejecute desde ahí.

    miércoles, 16 de marzo de 2016 6:18
  • Alberto, muchas gracias por tu respuesta, hice lo que me recomendabas deje mi paquete SSIS en la siguiente ruta,
    C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\JOBS

    pero nada sigo con errores al querer ejecutarlo por un trabajo progrmado, este es el error que me da ahora:

    Mensaje
    Ejecutado como usuario: NT Service\SQLSERVERAGENT. Utilidad de ejecución de paquetes de Microsoft (R) SQL Server  Version 12.0.2000.8 for 64-bit  Copyright (C) Microsoft Corporation. Todos los derechos reservados.    Iniciado: 10:13:00  Error: 2016-03-16 10:13:00.55     Código: 0xC0016016     Origen: IMPORTA_ESTADOS1      Descripción: Error al descifrar el nodo XML "DTS:Password" protegido: 0x8009000B "Clave no válida para utilizar en el estado especificado.". Es posible que no esté autorizado para obtener acceso a esta información. Este error se produce si hay un error de cifrado. Compruebe que la clave es correcta.  Fin de error  Error: 2016-03-16 10:13:00.55     Código: 0xC0016016     Origen: IMPORTA_ESTADOS1      Descripción: Error al descifrar el nodo XML "DTS:Password" protegido: 0x8009000B "Clave no válida para utilizar en el estado especificado.". Es posible que no esté autorizado para obtener acceso a esta información. Este error se produce si hay un error de cifrado. Compruebe que la clave es correcta.  Fin de error  Error: 2016-03-16 10:13:00.69     Código: 0xC0202009     Origen: IMPORTA_ESTADOS1 Administrador de conexiones "DestinationConnectionOLEDB"     Descripción: Código de error SSIS DTS_E_OLEDBERROR. Error de OLE DB. Código de error: 0x80040E4D.  Hay un registro OLE DB disponible. Origen: "Microsoft SQL Server Native Client 11.0" Resultado: 0x80040E4D Descripción: "Error de inicio de sesión del usuario 'scada_admin'.".  Fin de error  Error: 2016-03-16 10:13:00.69     Código: 0xC020801C     Origen: Tarea Flujo de datos 1 Destino - Consulta [20]     Descripción: Código de error SSIS DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. Error de la llamada del método AcquireConnection al administrador de conexiones "DestinationConnectionOLEDB". Código de error: 0xC0202009. Puede que haya otros mensajes de error expuestos anteriores a éste con más información sobre el motivo del error del método AcquireConnection.  Fin de error  Error: 2016-03-16 10:13:00.69     Código: 0xC0047017     Origen: Tarea Flujo de datos 1 SSIS.Pipeline     Descripción: Error en la validación de Destino - Consulta; se devolvió el código de error 0xC020801C.  Fin de error  Error: 2016-03-16 10:13:00.69     Código: 0xC004700C     Origen: Tarea Flujo de datos 1 SSIS.Pipeline     Descripción: Error al validar uno o más componentes.  Fin de error  Error: 2016-03-16 10:13:00.69     Código: 0xC0024107     Origen: Tarea Flujo de datos 1      Descripción: Se produjeron errores al validar la tarea.  Fin de error  DTExec: la ejecución del paquete devolvió DTSER_FAILURE (1).  Iniciado: 10:13:00  Finalizado: 10:13:00  Transcurrido:  0.219 segundos.  Error de ejecución del paquete.  No se pudo realizar el paso.


    miércoles, 16 de marzo de 2016 13:13
  • No estoy para nada seguro, pero creo que el cifrado de contraseñas es dependiente de la PC que cifra.  En otras palabras, una contraseña cifrada en la PC de desarrollo solamente puede descifrarse en esa PC.  No tengo solución, lo siento.  No es mi área.  Además no suelo tener contraseñas que cifrar.  Todas mis conexiones a SQL Server usan cuentas de Windows (Active Directory).

    Jose R. MCP
    Code Samples

    miércoles, 16 de marzo de 2016 13:50
  • Bueno, ahora el error cambia y de lo que se queja es de que las contraseñas cifradas dentro del .dtsx no las puede descifrar (esto es aplicable aunque estén vacías las contraseñas, el ejecutante no lo sabe porque no llega a poder abrir el campo "password" en el archivo). La razón es que al salvar el .dtsx se cifran con unas claves internas asociadas al usuario actual, y cuando el paquete lo ejecuta el Agente el usuario es otro y por lo tanto no está en posesión de las mismas claves.

    Te sugiero que desde Visual Studio cuando estés diseñando el .dtsx actives en el Proyecto la opción "Generate Deployment Utility" (que por defecto es False, cámbiala a True). Después compilas el proyecto. El resultado de compilar es un fichero en la subcarpeta bin que acaba en una extensión muy larga, algo parecido a .ssisdeploymanifest. Si haces doble-click sobre ese fichero, se dispara el asistente para instalar el .dtsx. Ese asistente te dará varias opciones para el modo de cifrado de los datos protegidos en el .dtsx, ahí puedes seleccionar alguna opción que no sea la de usar la clave del usuario.

    miércoles, 16 de marzo de 2016 15:20
  • Estimados, muchas gracias por su ayuda,
    Alberto, a lo mejor por ahi esta mi error, porque no utilizo visual studio para crear los .dtsx, estos los creo entrando a SQL Management Studio , hago botón derecho sobre mi base de datos y en tareas utilizo el "asistente de importación y exportación de SQL server" y en la parte que tengo que guardar el paquete SSIS elijo la opción :
    Sistema de Archivos

    En nivel de proteccion de paquetes Elijo:
    Cifrar la informacion confidencial con una clave de usuario  (es la opcion que muestra por defecto)
     las otras opciones son:
    No guardar información confidencial  
    Cifrar la información confidencial con una contraseña
    Cifrar todos los datos con una clave de usuario

    Cifrar todos los datos con una clave de contraseña

    no se cual elegir para no tener problemas con las contraseñas.

    Espero me puedan indicar que es lo que estoy haciendo mal.

    PD: Mi paquete SSIS lo que hace es conectar mi SQL server con una base de datos Sybase (Conexión por ODBC)
    e importo los datos de una tabla de sybase a una tabla de Sql Server.

    miércoles, 16 de marzo de 2016 18:29
  • Vale, el asistente para importar y exportar al final genera un paquete .dtsx igual que si lo hubieras hecho con el BIDS o las Data Tools desde VS. No te genera la utilidad de despliegue, pero tiene la opción de desplegarlo directamente, que por lo visto es lo que estás haciendo.

    Si estás cifrando con la clave de usuario, el problema es el que estás viendo: que cuando lo ejecutas con otro usuario, no tiene la misma clave y no puede descifrar los datos. Puedes decirle que cifre la información confidencial con una contraseña, y así podrá rodar desde la cuenta del Agente (siempre que te acuerdes de la contraseña para decírsela cuando lo configures).

    Otra opción sería crearle un Proxy al Agente, y pedirle que el Step del Job que usas para lanzar el paquete lo ejecute usando ese Proxy (es una opción que aparece en la interfaz del Agente en SSMS). En el proxy pondrías el Credential de tu propia cuenta, y eso te permitiría que el .dtsx se ejecute con tu propia cuenta de usuario y por lo tanto no tenga problemas con los datos cifrados desde tu cuenta.

    miércoles, 16 de marzo de 2016 18:49
  • Alberto, gracias nuevamente por tu tiempo y ayuda, lamentablemente no he tenido resultados satisfactorios, la opción del proxy no la puedo realizar porque estoy dentro la red corporativa de mi trabajo, así que me fui por la primera opción en esta al momento de programar el JOB me pide la contraseña de cifrado que le di, hasta ahí todo bien pero al ejecutar el JOB ahora me muestra el siguiente error. 

    Mensaje
    Ejecutado como usuario: NT Service\SQLSERVERAGENT. Utilidad de ejecución de paquetes de Microsoft (R) SQL Server  Version 12.0.2000.8 for 64-bit  Copyright (C) Microsoft Corporation. Todos los derechos reservados.    Iniciado: 11:11:41  Error: 2016-03-17 11:11:42.16     Código: 0xC0208449     Origen: Tarea Flujo de datos 1 Origen - Consulta [43]     Descripción: El origen ADO NET no pudo adquirir la conexión {764CEDAD-4671-407C-930A-BEE00EC60D54} y recibió el siguiente mensaje de error: "ERROR [IM014] [Microsoft][Administrador de controladores ODBC] La arquitectura del DSN especificado no coincide entre el controlador y la aplicación.".  Fin de error  Error: 2016-03-17 11:11:42.16     Código: 0xC0047017     Origen: Tarea Flujo de datos 1 SSIS.Pipeline     Descripción: Error en la validación de Origen - Consulta; se devolvió el código de error 0xC0208449.  Fin de error  Error: 2016-03-17 11:11:42.16     Código: 0xC004700C     Origen: Tarea Flujo de datos 1 SSIS.Pipeline     Descripción: Error al validar uno o más componentes.  Fin de error  Error: 2016-03-17 11:11:42.16     Código: 0xC0024107     Origen: Tarea Flujo de datos 1      Descripción: Se produjeron errores al validar la tarea.  Fin de error  DTExec: la ejecución del paquete devolvió DTSER_FAILURE (1).  Iniciado: 11:11:41  Finalizado: 11:11:42  Transcurrido:  0.234 segundos.  Error de ejecución del paquete.  NOTA: el paso se reintentó el número solicitado de veces (1) sin realizarse correctamente.  No se pudo realizar el paso.

    Lo extraño es que si utilizo la herramienta de "Utilidad de ejecución de paquetes" el paquete que cree funciona correctamente, me pide la contraseña de cifrado y después se ejecuta sin problemas, pero al querer integrar esa ejecución a un JOB es ahí que no funciona.

    PD: estoy trabajando con el usuario ' sa' de mi base de datos para crear el paquete y para crear el JOB que lo ejecute.

    Desde ya muchas gracias.

    jueves, 17 de marzo de 2016 14:21
  • [...] la opción del proxy no la puedo realizar porque estoy dentro la red corporativa de mi trabajo [...]

    Creo que te estás confundiendo con un proxy de red, que no tiene nada que ver con este asunto. Esto es un proxy de credenciales del Agente, que se configura desde dentro del SQL Server Management Studio y solo afecta a la instancia local del Agente de SQL Server, no tiene nada que ver con la red.
    La arquitectura del DSN especificado no coincide entre el controlador y la aplicación
    Eso casi seguro que se refiere a que estás usando un DSN de 32 bits, y lo estás intentando usar desde un ejecutable de 64 bits. Cuando ejecutas el paquete desde el dtexec o el dtexeceui te lo lanza en 32 bits y no hay problema, pero cuando lo lanza el Agente en 64 bits falla. Tengo entendido que jugando con las propiedades del paquete o de SSIS existe alguna forma de forzarlo a que ruede en 32 bits, pero aquí ya no puedo ayudarte, no me acuerdo de cómo se hacía.
    jueves, 17 de marzo de 2016 15:37