pero - Ejecutar el paquete hijo en la tienda de paquetes SSIS desde la tarea de script, con un giro
script task ssis ejemplo (1)
En lugar del método App.LoadPackage, usaría el método LoadFromSqlServer
app.LoadFromSqlServer("/OptionalFolderButSlashRequired/ChildPackage", "server", null, null, null);
La documentación sobre la Aplicación y el Paquete generalmente tienen ejemplos en los métodos que he necesitado usar.
Tengo un paquete principal que necesita ejecutar el mismo paquete secundario varias veces. Para hacer las cosas más divertidas, cada instancia necesita tener un valor diferente definido para el parámetro padre pasado al paquete secundario.
Creé una tarea de script usando la siguiente secuencia de comandos:
Microsoft.SqlServer.Dts.Runtime.Application App = new Microsoft.SqlServer.Dts.Runtime.Application();
Package pkg = new Package();
try
{
pkg = App.LoadPackage(@"//server/SSIS Packages/ChildPackage.dtsx", null);
pkg.Variables["ChildVariableName"].Value = Dts.Variables["AParentVariableName"].Value;
pkg.Execute();
Dts.TaskResult = (int)ScriptResults.Success;
}
catch (Exception ex)
{
Dts.Events.FireError(0, "Run child pkg for parent task", ex.Message, string.Empty, 0);
Dts.TaskResult = (int)ScriptResults.Failure;
}
El problema es que mis paquetes están almacenados en el almacén de paquetes SSIS de mi servidor SQL 2008 R2 y no puedo entender cómo hacer referencia a ellos; cada ejemplo de código que he visto es para una ubicación física. Esto se encuentra en un clúster HA, por lo que será difícil mantener una ubicación física para el paquete.
Entonces, o bien necesito (a) encontrar la manera de cambiar el valor de ParentVariable cada vez que se inicia una tarea Ejecutar paquete para este paquete hijo o (b) averiguar cómo hacer referencia al paquete correcto dentro del almacén de paquetes SSIS, en el cual punto puedo pasar con seguridad el valor correcto. ¿Alguien tiene alguna idea?