2012-06-11 89 views
8

He estado trabajando en un gran proyecto ETL con más de 150 tablas y durante el diseño tuve que realizar un cambio importante en los nombres de columna y tipos de datos de destino para un par de tablas.Actualizar metadatos del esquema de destino en Integration Services

Mi problema es que no puedo obtener SSIS para ver el nuevo esquema de las tablas que cambié. Entonces me gustaría saber ¿cómo puedo obtener SSIS para actualizar este esquema? Me parece ridículo que no haya manera de decirle a SSIS que actualice los metadatos del esquema de la base de datos, especialmente para la migración de la base de datos.

Volver a crear el proyecto desde cero está fuera de cuestión porque ya he dedicado algunas horas. También cambiar manualmente las más de 400 columnas que cambié tampoco es una opción.

+1

Probablemente este no resolverá su problema, pero puede ser útil. El paquete completo de SSIS es solo xml. Puede cambiar datos xml usando "Buscar y reemplazar" o crear su propia herramienta. Si desea realizar un seguimiento de los cambios en SSIS, debe usar UDM (Vistas de origen de datos). – devarc

+0

De hecho, miré en mi paquete XML antes, pero había demasiadas columnas para cambiar, por lo que incluso un buscar/reemplazar no pudo solucionarlo debido a la especificidad de algunos cambios. Gracias. – Ucodia

Respuesta

1

Después de mi auto-respuesta anterior, finalmente encontré lo que impedía que los metadatos se actualizaran.

Cuando modifiqué originalmente mi base de datos, en realidad ejecuté otra secuencia de comandos que estaba haciendo un DROP en la tabla y luego un CREATE TABLE para volver a crear la tabla desde cero. Allí, SSIS nunca fue capaz de detectar cambios y tuve que hacer todo lo demás en mi otra respuesta.

Más tarde hoy tuve que hacer algunas modificaciones menores y esta vez opté por un ALTER TABLE. Mágicamente, esta vez SSIS detectó todos los cambios, incluso me notificó que actualiza columnas del editor avanzado, que funcionó bien.

Así que, básicamente, todos estos problemas han sido causados ​​por mis escasos conocimientos sobre el DBA y sus mejores prácticas.

1

Encontré una manera de solucionarlo, pero eso fue un poco complicado.

Aunque pensé que estaba eliminando por completo las referencias de la tabla de mis paquetes, siempre obtenía los metadatos anteriores.

Todavía no tengo una solución clara, pero aquí es lo que hice para solucionarlo:

  • eliminado cualquier referencia a las tablas de origen y destino en cuestión
  • Suprimido obj y la carpeta bin de la carpeta del proyecto
  • guardadas, cierra y vuelve a abrir el proyecto
  • Creado flujo de datos nuevos desde cero y metadatos actualizada fue finalmente hay

No sé dónde se almacenaron esas informaciones en la memoria caché, pero sospecho que la carpeta obj mantiene una copia almacenada en caché de sus paquetes o que Visual Studio conserva los metadatos que se liberan cuando los cierra. De todos modos, siguiendo estos pasos debería solucionarlo.

+0

Creo que si abre el componente de destino y va a la pestaña de asignación, debería recoger los nuevos metadatos. Eso usualmente funciona para mi – rvphx

+0

Eso es lo primero que hice, pero siempre me daba los viejos metadatos. – Ucodia

16

¿Qué hay de usar el Advanced Editor y presionar el botón Refresh en el lado izquierdo de abajo?

+0

¡Estúpidamente simple pero hizo el trabajo por mí! – Fishcake

+0

@Fishcake - Algo tan estúpidamente simple debe estar en el editor no avanzado (por ejemplo, el Normal). No sé por qué Microsoft pensó que era una buena idea esconder un montón de, en mi opinión (y asumo las opiniones de muchos otros), la funcionalidad básica detrás de un editor avanzado. – KSwift87

Cuestiones relacionadas