locked
Invocación paquetes SSIS RRS feed

  • Pregunta

  • Hola: Estoy trabajando con paquetes SSIS de SQL 2005. Estos están construidos con un único paquete padre y varios paquetes hijos, que son llamados a través del padre. Estos paquetes están importados directamente en el servidor, no como sistema de archivos.

     

    La ejecución del paquete padre se realiza con el siguiente código:

     

    [MTAThread]

    private void button1_Click(object sender, EventArgs e)

    {

    try

    {

    System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection();

    string cadenaConexion = "Data Source=serv;User ID=usr;Password=pass;Initial Catalog=BD;Persist Security Info=True";

     

    conn.ConnectionString = cadenaConexion;

    conn.Open();

     

     

    pq = app.LoadFromDtsServer("\\MSDB\\PaquetePadre", "Servidor",null);

    pq.ImportConfigurationFile("ruta de .dtsConfig");

     

    resultado = pq.Execute().ToString();

     

    DtsErrors errs = pq.Errors;

    string errores;

     

    foreach (DtsError err in errs)

    {

    errores += err.Description + "; ";

    }

     

    }

    catch (Exception ex)

    {

    string x = ex.Message;

    }

    }

     

    Sin embargo, el error expuesto tras la ejecución es el siguiente:

     

    "Error 0x80004002 while preparing to load the package. No such interface supported"

     

    Según lo que he averiguado, este problema se presenta al invocar por código un paquete que invoca a otros.

     

    Cualquier ayuda que me puedan ofrecer se las agradezco mucho.

     

    Saludos,...

    miércoles, 17 de octubre de 2007 15:51

Respuestas

Todas las respuestas

  • hola. te muestro un webmethod que utilizo para invocar a un paquete que tiene 2 parametros de entrada para ver si te ayuda cambiando la forma de invocar:::

     

    [WebMethod]

    public string ExecutePackageMensualCN(String ServerName, String PackageName, int CveMes,string connectionstring)

    {

    try

    {

    DTSExecResult Results;

    Application app = new Application();

    Package package = app.LoadFromDtsServer(PackageName, ServerName, null);

    Variables variables = package.Variables;

    variables["CVEMES"].Value = CveMes;

    variables["ConnectionString"].Value = connectionstring;

    Results = package.Execute();

    return Results.ToString();

    }

    catch (SoapException ex)

    {

    return ex.ToString();

    }

    catch (Exception ex)

    {

    return ex.ToString();

    }

    }

     

    miércoles, 6 de febrero de 2008 18:13
  • Aquí se exponen varios métodos para ejecutar un dtsx desde código:

    http://blog.josemarianoalvarez.com/post/2009/06/13/Como-ejecutar-programaticamente-un-paquete-de-Integration-Services.aspx

    Hubiera sido necesaria una interacción con el usuario que inició el hilo para saber el problema concreto que estaba teniendo en su llamada.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/

    lunes, 30 de agosto de 2010 16:01
    Moderador