Ejecutando un paquete de SSIS usando dtexec

Estoy ejecutando un paquete de SSIS usando dtexec. El paquete funciona bien en BIDS en mi sistema. Cuando creo un trabajo de agente de servidor SQL para ejecutar el paquete en un horario. El paso de ejecución del paquete está progtwigdo como una tarea T-SQL, no como un paquete SSIS uno). El trabajo no informa ningún error, pero ni siquiera está creando el archivo Excel de salida en mi destino deseado en el servidor.

Además, cuando ejecuto el comando por separado en el shell del comando, me devuelve los errores que se muestran a continuación. De forma intermitente, también devolverá errores en la tarea FileSystem que utilizo para copiar archivos, diciendo que ni el origen ni el destino existen. Cuando los mismos valores de variable me funcionan en BIDS, ¿por qué falla el trabajo SQL?

Started: 7:33:27 PM Error: 2012-10-26 19:33:27.60 Code: 0xC0016016 Source: Description: Failed to decrypt protected XML node "DTS:Password" with error 0 x8009000B "Key not valid for use in specified state.". You may not be authorized to access this information. This error occurs when there is a cryptographic err or. Verify that the correct key is available. End Error Error: 2012-10-26 19:33:27.78 Code: 0xC00F9304 Source: GICSReport Connection manager "Excel Connection Manager" Description: SSIS Error Code DTS_E_OLEDB_EXCEL_NOT_SUPPORTED: The Excel Conne ction Manager is not supported in the 64-bit version of SSIS, as no OLE DB provi der is available. End Error Error: 2012-10-26 19:33:27.78 Code: 0xC020801C Source: Data Flow Task Excel Destination [22] Description: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAG ER. The AcquireConnection method call to the connection manager "Excel Connecti on Manager" failed with error code 0xC00F9304. There may be error messages post ed before this with more information on why the AcquireConnection method call fa iled. End Error Error: 2012-10-26 19:33:27.78 Code: 0xC0047017 Source: Data Flow Task SSIS.Pipeline Description: component "Excel Destination" (22) failed validation and returne d error code 0xC020801C. End Error Error: 2012-10-26 19:33:27.78 Code: 0xC004700C Source: Data Flow Task SSIS.Pipeline Description: One or more component failed validation. End Error Error: 2012-10-26 19:33:27.79 Code: 0xC0024107 Source: Data Flow Task Description: There were errors during task validation. End Error DTExec: The package execution returned DTSER_FAILURE (1). Started: 7:33:27 PM Finished: 7:33:27 PM Elapsed: 0.343 seconds 

Pls ayuda! 🙂 …. ¿Debería agregar todas las variables, los administradores de conexión y todo a mi archivo de configuración? actualmente solo he agregado algunos valores de ppty de las variables y los administradores de conexión, pero no parece que el combo funcione de manera efectiva.

El primer error que abordaría es “El Administrador de conexión de Excel no es compatible con la versión de 64 bits de SSIS, ya que no hay ningún proveedor OLE DB disponible”.

Los controladores de Excel listos para usar solo existen en el espacio de direcciones de 32 bits. BIDS / SSDT es una aplicación de 32 bits, por lo que la fuente y los destinos de Excel funcionan bien. Sin embargo, cuando los ejecuta desde la línea de comandos / Agente SQL, necesita usar explícitamente la versión de 32 bits del progtwig DTEXEC.

El paso 1 será garantizar que pueda ejecutar el paquete desde la línea de comando en el servidor en el que se ejecuta el agente como usted mismo. Suponiendo que su SQL Server está instalado en la ubicación habitual, es probable que tenga uno de los siguientes DTEXEC.exe disponibles para usted

 C:\Program Files\Microsoft SQL Server\90\DTS\Binn\DTExec.exe c:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTExec.exe C:\Program Files\Microsoft SQL Server\110\DTS\Binn\DTExec.exe C:\Program Files\Microsoft SQL Server\120\DTS\Binn\DTExec.exe C:\Program Files (x86)\Microsoft SQL Server\90\DTS\Binn\DTExec.exe C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\DTExec.exe C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\DTExec.exe 

Querrá usar la versión (x86). Futuros lectores, si usted está en una versión 32 de Windows (Windows 2003, tal vez), las primeras 3 serán las únicas opciones disponibles para usted. Como ha indicado el mensaje de error de Vivek, está ejecutando un paquete SSIS en modo de 64 bits.

dtexec proporciona un modificador de línea de comandos / X86 que le permite utilizar sin problemas el mismo ejecutable para las operaciones de 32 y 64 bits. ¡MENTIRAS! La documentación lo llama pero ¿quién lee la documentación?

Esta opción solo la usa el Agente SQL Server. Esta opción se ignora si ejecuta la utilidad dtexec en el símbolo del sistema.

Por lo tanto, deberá ejecutar su paquete proporcionando la ruta explícita

C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe /file C:\folder\GICSReport.dtsx

Veo “No se pudo descifrar el nodo XML protegido” en su salida y también indica que está utilizando archivos de configuración, por lo que es muy probable que cambie su PackageProtectionLevel del EncryptSensitiveWithUserKey predeterminado a DontSaveSensitive. Esa característica existe para evitar la exposición accidental de datos confidenciales (contraseñas), pero como ya está manejando eso con los archivos de configuración, eso no debería ser un problema. … Eso podría ser un error de uno de los otros niveles de protección del paquete ahora que lo pienso.

En cualquier caso, intente ejecutar el ejecutable de 32 bits primero. Si eso no funciona, intente cambiar el nivel de protección del paquete como se indica. Si alguno de ellos hace que el paquete se ejecute como se esperaba, intente ejecutar el mismo comando desde el Agente SQL.

Si todo funciona, marca esto como la respuesta. De lo contrario, actualice el ticket con el error actual generado y le pediremos más información.

Aquí está la solución si está intentando ejecutar un paquete SSIS con dtexec desde dtexec SQL que contiene una importación excel.

  1. Crea un archivo por lotes que contenga el siguiente código.

    cd C: \ Archivos de progtwig (x86) \ Microsoft SQL Server \ 100 \ DTS \ Binn \ DTEXEC.exe / DE “contraseña” / F “C: \ mySSISfolder \ package.dtsx”

  2. Cree un acceso directo que apunte a su archivo de proceso por lotes, establezca las properties\advanced en el acceso directo para ejecutarlo como administrador.

  3. desde el procedimiento transact sql ejecuta el siguiente comando

    exec xp_cmdshell ‘C: \ myfolder \ runssis_sc.lnk’

    Intereting Posts