none
Loguear Parámetros de Proyecto SSIS 2012 RRS feed

  • Pregunta

  • Buenos días!

    ¿Estáis bien?

    El tema es que quería loguear los valors de los parámetros con los que se ejecuta un paquete SSIS.

    La cuestión es que quiero hacerlo de forma dinámica y guardarlos en una tabla (ParameterName, Value, Id_Load).

    Es decir, me gustaría ir recorriendo la colección de parámetros e ir logueando.

    Gracias de antemano y un saludo.

    lunes, 7 de abril de 2014 10:25

Respuestas

  • Que alguien me corrija si me equivoco, pero no creo que se puedan recorren la colección de parámetros del paquete dentro de un script task. Para eso tendrías que abrirte el paquete a través del modelo de objetos y recorrer dicha colección del propio paquete en ejecución. La clase que contiene el objeto package es microsoft.sqlserver.dts.runtime, y desde ahí recorrer la colección parameters, pero también pueden estar a nivel de proyecto... no se si se puede hacer. Sería explorar esa via.



    Víctor M. García Sánchez. Hope this help. Please vote if you find this posting was helpful. if this is an answer to your question, please mark it. http://bifase.blogspot.com | http://twitter.com/atharky

    lunes, 7 de abril de 2014 16:52
  • Hola, Victor.

    Marcando los parámetros accesibles al script en ReadOnlyVariables se pueden recorrer.

     for (int i = 0; i < Dts.Variables.Count; i++)
                {
                    String vName = Dts.Variables[i].Name;
                    String vValue = Dts.Variables[i].Value.ToString ();
                    sqlComm=new System.Data.OleDb.OleDbCommand ("INSERT INTO Aux.Parameter_Load (Id_Log_Load,Parameter,Value) VALUES ('"+Id_Load +"','"+vName +"','"+vValue +"')", sqlconn);
                    sqlComm.ExecuteNonQuery();
                }
                cm.ReleaseConnection(sqlconn);

    Así es como lo tengo hecho yo.

    La única pega es que si se da de alta un nuevo parámetro hay que marcarlo de ReadOnlyVariables.

    Un saludo.

    martes, 8 de abril de 2014 10:26

Todas las respuestas

  • Hola @Hectorino78

    Me imagino que cuando te refieres a parámetros hablas de SSIS 2012 y sus parámetros a nivel de proyecto y paquetes, y no de configuraciones de paquetes.

    Bien, siendo así lo tienes muy muy fácil. Con una tarea Ejecutar SQL puedes lanzar un insert con parámetros (insert into TableA(columnA, columnB, columnC) values (?,?,?) y sustituir esos parámetros SQL por los valores de los parámetros de paquete/proyecto haciendo el mapping correspondiente.

    Recuerda que el mapeo en proveedores oledb es con el índice (base 0) del parámetro.

    Saludos!


    Víctor M. García Sánchez. Hope this help. Please vote if you find this posting was helpful. if this is an answer to your question, please mark it. http://bifase.blogspot.com | http://twitter.com/atharky

    lunes, 7 de abril de 2014 16:20
  • Gracias por tu respuesta Victor.

    La cuestión es que me gustaría que fuera más dinámico. Es decir, que si se agrega un nuevo parámetro al proyecto SSIS 2012, que automáticamente los loguee.

    Ahora mismo lo estoy haciendo con una Script Task en c#, en la cual recorro los parametros y los inserto en una tabla clave, valor. El problema es que en la Script Task hay que indicar a que parámetros y variables va a tener acceso al script, con lo cual, es bastante dinámico, pero no del todo.

    Un saludo.

    Héctor.

    lunes, 7 de abril de 2014 16:29
  • Que alguien me corrija si me equivoco, pero no creo que se puedan recorren la colección de parámetros del paquete dentro de un script task. Para eso tendrías que abrirte el paquete a través del modelo de objetos y recorrer dicha colección del propio paquete en ejecución. La clase que contiene el objeto package es microsoft.sqlserver.dts.runtime, y desde ahí recorrer la colección parameters, pero también pueden estar a nivel de proyecto... no se si se puede hacer. Sería explorar esa via.



    Víctor M. García Sánchez. Hope this help. Please vote if you find this posting was helpful. if this is an answer to your question, please mark it. http://bifase.blogspot.com | http://twitter.com/atharky

    lunes, 7 de abril de 2014 16:52
  • Hola, Victor.

    Marcando los parámetros accesibles al script en ReadOnlyVariables se pueden recorrer.

     for (int i = 0; i < Dts.Variables.Count; i++)
                {
                    String vName = Dts.Variables[i].Name;
                    String vValue = Dts.Variables[i].Value.ToString ();
                    sqlComm=new System.Data.OleDb.OleDbCommand ("INSERT INTO Aux.Parameter_Load (Id_Log_Load,Parameter,Value) VALUES ('"+Id_Load +"','"+vName +"','"+vValue +"')", sqlconn);
                    sqlComm.ExecuteNonQuery();
                }
                cm.ReleaseConnection(sqlconn);

    Así es como lo tengo hecho yo.

    La única pega es que si se da de alta un nuevo parámetro hay que marcarlo de ReadOnlyVariables.

    Un saludo.

    martes, 8 de abril de 2014 10:26