Estoy tratando de ejecutar una tabla de Excel a través de un paquete SSIS y 3 nodos, tiene una división condicional. Estoy usando una hoja de cálculo de trabajo previamente conocida con algunos datos agregados.

El error que recibo específicamente es:

Split.Inputs condicional [Split Input] .Columns [ColumnName] tiene un ID de linaje 147 que no se usaba anteriormente.

He probado un par de hojas de cálculo sin resultado. Estaba obteniendo ID 105 inicialmente.

Mis preguntas específicas son: ¿A qué corresponden las identificaciones? ¿Dónde miro para intentar solucionarlos?

Algunos registros adicionales.

Salida:

Error en la Tarea de flujo de datos 1 [SSIS.Pipeline]: División condicional. Entradas [Entrada de división condicional]. Las columnas [ColumnName] tienen un ID de linaje 147 que no se utilizó previamente en la tarea de Flujo de datos.

Error en el flujo de datos Tarea 1 [SSIS.Pipeline]: "Split condicional" falló la validación y devolvió el estado de validación "VS_NEEDSNEWMETADATA".

Error en el flujo de datos Tarea 1 [SSIS.Pipeline]: uno o más componentes fallaron la validación.

Error en el flujo de datos Tarea 1: Hubo errores durante la validación de la tarea.

3
Tyler C 27 abr. 2017 a las 22:55

3 respuestas

La mejor respuesta

"La ID de linaje es una propiedad del componente o transformación utilizada en la tarea de flujo de datos. Contiene un valor entero que funcionará como puntero de búfer. A cada columna de la tarea de flujo de datos se le asignará una ID de linaje". Lea sobre el ID de linaje en este artículo de Microsoft TechNet

El error de ID DE LÍNEA implica que se cambiaron los metadatos de origen, solo vuelva a validar el origen (conexión y componente) haciendo doble clic en la división condicional y ciérrelo, luego verifique los metadatos de las columnas (usando el editor avanzado). (Tenga en cuenta que al hacer doble clic en un componente que contiene errores, se le solicitará que lo repare)

O puede intentar eliminar la división condicional y agregarla nuevamente (si la solución anterior no funciona)

2
Hadi 27 abr. 2017 a las 20:49

Creo que SSIS asigna identificadores únicos (ID de linaje) a cada columna en cada tubería que conecta sus componentes. SSIS se confunde cuando un componente espera un ID de linaje de x, pero no puede encontrarlo en la tubería de entrada.

Generalmente, intentas encontrar la tubería ofensiva (en BIDS / SSDT, usando el método de @ Wendy). Al hacer doble clic en la tubería o en los componentes conectados, a veces se producirá un cuadro de diálogo que ofrece la opción de solucionar el problema. De lo contrario, quitar y recrear la tubería es su mejor oportunidad.

Los componentes aguas abajo pueden verse afectados negativamente cuando cambias las cosas aguas arriba de ellos. A menudo, el único recurso cuando se realizan modificaciones en el flujo medio es reconstruir todo el flujo descendente. SSIS es un poco frágil en esta área.

2
Marc Bernier 27 abr. 2017 a las 20:10

Haga clic con el botón derecho en División condicional -> Editor avanzado -> Propiedades de entrada y salida -> gastar esas columnas, verá que cada columna tiene un LineageID.

2
Wendy 27 abr. 2017 a las 20:05