sql-server - paquetes - ejecutar ssis desde stored procedure
Adquiera conexión y comportamiento extraño al usar la tarea Ejecutar paquete (2)
Tengo un paquete maestro donde llamo a varios paquetes usando la tarea Ejecutar paquete.
Los paquetes secundarios y maestros no tienen ninguna configuración y están conectando OLEDB (SQL Server) usando conexiones de autenticación SQL codificadas en los administradores de conexión.
Además, los paquetes tienen cifrado sensible con la contraseña.
Se ha observado un comportamiento extraño: 1. Los paquetes secundarios se ejecutan correctamente cuando se ejecutan desde BIDS pero fallan cuando se ejecutan desde paquetes maestros con el error de conexión de adquisición.
"La llamada al método AcquireConnection al administrador de conexión falló con el código de error 0xC0202009"
¿Alguien puede ayudar con la resolución para esto?
¿Error de 64/32 bits? ¿Tiene administradores de conexión de Excel como fuente tal vez?
Dtexec tiene tanto una aplicación de 64 bits como una de 32 bits. Supongo que cuando se ejecuta desde BIDS, usa los 32 bits dtexec y ¿cómo está ejecutando el maestro? Si hace doble clic en él, ese puede ser el problema porque DTExecUI (Execute Package Utility) está disponible solo como una aplicación de 32 bits. Si está trabajando en un servidor de 64 bits y ejecuta un paquete a través de DTExecUI, el paquete se ejecutará en modo de emulación de 32 bits. Además, el paquete puede fallar si los administradores de conexión utilizados no son compatibles con 32 bits.
Asegúrese de tener en cuenta que si desarrolla un paquete en un entorno de 32 bits y desea ejecutar el paquete en un entorno de 64 bits, los administradores de conexión deben ser compatibles con 64 bits. Algunos administradores de conexión, como Excel, solo trabajan en un entorno de 32 bits.
EDITAR: intente configurar la contraseña aquí:
Parece que su paquete hijo no está recibiendo la cadena de conexión de su paquete principal. Necesita pasar la cadena de conexión del paquete principal al secundario.
Ver este artículo
Actualización: -
Cuando tiene EncryptSensitiveWithPassword como control de acceso tanto para su hijo como para su paquete principal mientras ejecuta el paquete hijo desde el paquete primario
Se le pedirá que ingrese la contraseña de su paquete hijo durante la ejecución.
Puede haber situaciones en las que, incluso después de ingresar la contraseña en el tiempo de ejecución, la ejecución de child pkg falle debido a un error de conexión. Esto puede suceder (no estoy seguro) debido a la cadena de conexión hija (En la tarea Ejecutar paquete) que aún puede estar apuntando a el paquete del viejo niño que no se ha reconstruido después de la modificación.
Mi sugerencia es cuando arrastra una Execute SQL Task
en el flujo de control use el archivo Ubicación del sistema y apunte al paquete hijo actualizado colocado en la carpeta bin (o su ruta de implementación) e ingrese la contraseña de su paquete hijo en la tarea
Para ejecutar el paquete principal desde el Servicio de Integración (MSDB), entonces necesita de alguna forma pasar la clave de descifrado infantil mientras se ejecuta en tiempo de ejecución.
Editar: Paso 1: Crear una configuración de paquete para el paquete padre de SSIS. Execute Package Task
tiene una propiedad PackagePassword
. PackagePassword
seleccionar esta propiedad al crear el archivo de configuración
Executables->ExecutePackageTask->PackagePassword
Paso 2: después de crear el archivo XML, ábralo y busque la propiedad ConfiguredType = y en el valor configurado ingrese la contraseña para su paquete hijo.
Paso 3: después de importar el paquete principal en MSDB, seleccione el archivo de configuración en la pestaña de configuración