none
Obtener nombre de la columna que falla en un flujo de datos

    Pregunta

  • Saludos a todos!!

    Agradezco de antemano a quienes me puedan ayudar con este tema, el cual paso a contarles,

    Tengo un paquete de SSIS desarrollado en  VSDT2012, básicamente, lo que hago es leer la información de un archivo .csv y guardarla en una base de datos, lo que necesito es que cuando se presente algún error por truncamiento o por tipos de datos poder obtener el nombre de la columna que produce el error. Intenté haciendo lo que se indica en esta entrada Mejorar una salida de errores con el componente de script, pero en primer lugar, no existe el tipo "IDTSComponentMetaData130" que se menciona allí, el que aparece es "IDTSComponentMetaData100", así que usé ese, pero cuando ejecuto el paquete, primero me sale esta ventana de error:

       

    y luego de cerrarla reviso la salida y me muestra el siguiente error: 

    Error: 0xC0047062 at Data Flow Task, Traducir Error [1181]: System.MissingMemberException: No se encuentra el miembro público 'GetIdentificationStringByID' en el tipo 'IDTSComponentMetaData100'.
       en Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.HandleUserException(Exception e)
       en Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.ProcessInput(Int32 inputID, PipelineBuffer buffer)
       en Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostProcessInput(IDTSManagedComponentWrapper100 wrapper, Int32 inputID, IDTSBuffer100 pDTSBuffer, IntPtr bufferWirePacket)
    Error: 0xC0047022 at Data Flow Task, SSIS.Pipeline: SSIS Error Code DTS_E_PROCESSINPUTFAILED.  The ProcessInput method on component "Traducir Error" (1181) failed with error code 0x80131512 while processing input "Input 0" (1191). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running.  There may be error messages posted before this with more information about the failure.

    De verdad agradezco mucho si me pueden ayudar, creí que sería algo muy sencillo, pero ya llevo 2 días buscando una solución.

    lunes, 8 de enero de 2018 2:15

Respuestas

  • el que esté el 130 o el 100 depende de la versión de integration services que estés usando.  Como puedes ver aquí parece que la interfaz 100 no tiene el método que estas intentando usar,  Si puedes cambia a una versión mas moderna de SQL server integration services, y si no puedes navegar al imputcollectoins https://msdn.microsoft.com/es-es/library/microsoft.sqlserver.dts.pipeline.wrapper.idtsinput100.aspx  y creo que con los métodos que te dan la columna por id o por lineage id (no estoy muy seguro de cual de los dos usa en el error) puedes encontrar el nombre 

    https://msdn.microsoft.com/es-es/library/microsoft.sqlserver.dts.pipeline.wrapper.idtsinputcolumncollection100.aspx


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    miércoles, 10 de enero de 2018 5:59
    Moderador

Todas las respuestas

  • el que esté el 130 o el 100 depende de la versión de integration services que estés usando.  Como puedes ver aquí parece que la interfaz 100 no tiene el método que estas intentando usar,  Si puedes cambia a una versión mas moderna de SQL server integration services, y si no puedes navegar al imputcollectoins https://msdn.microsoft.com/es-es/library/microsoft.sqlserver.dts.pipeline.wrapper.idtsinput100.aspx  y creo que con los métodos que te dan la columna por id o por lineage id (no estoy muy seguro de cual de los dos usa en el error) puedes encontrar el nombre 

    https://msdn.microsoft.com/es-es/library/microsoft.sqlserver.dts.pipeline.wrapper.idtsinputcolumncollection100.aspx


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    miércoles, 10 de enero de 2018 5:59
    Moderador
  • Mil gracias por tu respuesta Miguel, voy revisar los enlaces que indicas.
    jueves, 11 de enero de 2018 14:36