vs_needsnewmetadata validación estado error devolvió c# ssis packages configuration-files

c# - validación - ¿Cómo superar el error vs_needsnewmetadata en la tarea de flujo de datos?



se devolvió el estado de validación vs_needsnewmetadata (4)

Si todo lo que está haciendo es copiar datos de un servidor SQL2005 a otro, simplemente crearía un servidor vinculado y usaría un proceso almacenado para copiar los datos. Un paquete de SSIS es excesivo.

Cómo crear un servidor vinculado

Una vez que se crea el servidor vinculado, simplemente programaría algo como ...

INSERT INTO server1.dbo.database1.table1(id,name) SELECT id, name FROM server2.dbo.database1.table1

En cuanto al paquete SSIS, siempre tuve que volver a abrir y reconstruir el paquete para que los metadatos se actualicen al modificar las propiedades de la columna de tablas.

Tengo un paquete SSIS que copia los datos en una tabla de un SQL Server 2005 a otro SQL Server 2005. Lo hago con una tarea de "Flujo de datos". En el archivo de configuración del paquete, expongo el nombre de la tabla de destino.

El problema es que cuando cambio el nombre de la tabla de destino en el archivo de configuración (a través del bloc de notas) aparece el siguiente error "vs_needsnewmetadata". Creo que entiendo el problema ... la asignación de la columna de la tabla de destino se corrigió cuando configuré el paquete por primera vez.

Pregunta: ¿cuál es la forma más fácil de hacer lo anterior con un paquete ssis?

He leído en línea sobre cómo configurar metadatos programáticamente y todo, pero me gustaría evitar esto. También escribí una aplicación de consola C # que hace todo bien ... todas las tablas, etc. están especificadas en la aplicación.config ... pero aparentemente esta solución no es lo suficientemente buena.


Compruebe si la nueva tabla de destino tiene las mismas columnas que la anterior.

Creo que el error ocurre si las columnas son diferentes y el destino ya no puede asignar sus columnas de entrada a las columnas de la tabla. Si dos tablas tienen el mismo esquema, este error no debería ocurrir.


¿Ha configurado DelayValidation en False en las propiedades de destino del origen de datos? Si no, intenta eso.

Editar: Por supuesto que debería ser DelayValidation a True, por lo que simplemente continúa y lo intenta en lugar de verificar. Además, en lugar de alterar su paquete en el Bloc de notas, ¿por qué no poner el nombre de la tabla en una variable, poner la variable en una Expresión en el destino y luego exponer la variable en un archivo de configuración .DtsConfig? Entonces puedes cambiar eso sin peligro.


Coincidir con la columna de origen de origen con mayúsculas y minúsculas ha hecho el trabajo por mí.

Al igual que en mi caso, SrNo_prod era una columna en dev y lo usamos. Desarrollamos el dtsx, mientras que ha sido creado como SrNo_Prod en prod, después de hacer un cambio de caso de P a p , obtuvimos una ejecución exitosa del paquete.