sqlserver net microsoft from ejecutar dtsx desde c# .net sql-server ssis

c# - net - ¿Deberían los programadores usar SSIS, y si es así, por qué?



execute ssis package from c# (7)

Como desarrollador .NET, ¿por qué razones debería preferir los paquetes SSIS a la escritura del código? Tenemos una tonelada de paquetes en producción donde trabajo actualmente, y son una pesadilla tanto para "escribir" (¿tal vez para dibujar?) Como para mantener. Cada paquete se parece a un cuenco de espaguetis multicolores con scripts de C # y VB.NET mezclados en los puntos donde se rompen las abstracciones. Para averiguar qué hace cada "Ejecutar tarea de SQL" o "Bucle de Foreach", tengo que hacer doble clic en la maldita cosa y navegar a través de un árbol de valores y expresiones literales, dispersos en varias pestañas.

Tengo una mente abierta, por lo que me gustaría saber si otros buenos desarrolladores encuentran que SSIS es más productivo que solo escribir algún código. Si encuentra que SSIS es más productivo, dígame por qué.


En mi opinión, SSIS es solo para operaciones ETL y no debe contener ninguna lógica fuera de ese alcance.


Intenté usar SSIS varias veces, y me rendí. OMI es mucho más fácil hacer todo lo que necesito en C #. SSIS es demasiado complejo, tiene demasiados errores y simplemente no lo vale. Es mucho mejor dedicar más tiempo a mejorar las habilidades de C # que dedicar el mismo tiempo al aprendizaje de SSIS: obtendrá mucho más rendimiento de su entrenamiento.

También encontrar y mantener la funcionalidad en una solución de VS es mucho más fácil. La prueba unitaria con VS es fácil. Todo lo que necesito hacer es verificar la fuente en Subversion y verificar cómo se cargó. La unidad de prueba de paquetes de SSIS está muy involucrada para decirlo suavemente.

Además, hubo situaciones en las que SSIS no completaba silenciosamente algunas columnas en algunas filas, saltándolas sin generar excepciones. Pasamos mucho tiempo resolviendo problemas y averiguando qué está pasando. Desarrollar una solución alternativa en C # tomó menos de una hora y funciona sin problemas durante dos años.


SSIS no es un programa. Muchas cosas son más rápidas de hacer en SSIS, y obtienes información muy detallada sobre el progreso y el error como administrador, lo que puede ser muy bueno en los escenarios que SSIS debe resolver, porque a veces las cosas van mal y el administrador necesita una gran cantidad de información.

Habiendo dicho eso, SSIS no es realmente tan útil si no tienes el material autoexplicativo, están destinados para algo, obtener demasiado en la programación general los hace sucky.


SSIS tiene su lugar, y ese lugar no es una programación general o como un reemplazo de los procedimientos almacenados. Viene de la escuela ETL (Extraer, Transformar y Cargar) y ahí es donde está su fortaleza.

El nombre antiguo (DTS, Servicios de Transformación de Datos) y el nuevo nombre (SSIS, Sql Server Integration Services) dejan en claro que es un servicio (o conjunto de servicios) diseñado para manipular datos para integrar la base de datos de SQL Server en procesos más grandes.


Si desea mover sus datos mediante programación, es posible que desee ver Rhino ETL.

También estoy trabajando en mi propio marco, Fluent ETL , ya que considero que SSIS es demasiado complicado para tareas de datos simples relacionadas con el desarrollo, como cargar datos de pruebas unitarias de un archivo CSV.


Tuve la desafortunada experiencia de trabajar en un proyecto en el que pensamos que SSIS sería una solución lo suficientemente buena como para agregar y combinar datos de varias fuentes. Lo desafortunado fue que funcionó muy bien al principio, pero luego cambiaron los requisitos y, finalmente, nos dimos cuenta de que era la herramienta equivocada.

tal vez solo estábamos utilizándolo incorrectamente, pero tuvimos muchas dificultades si alguna vez cambiamos nuestro esquema y eventualmente solo reutilizamos nuestras definiciones ORM del frente para escribir una herramienta personalizada en C # para hacer esto. Como ya teníamos el modelo de datos, esto fue sorprendentemente fácil. obviamente YMMV y yo no soy un experto en SSIS, pero en este caso SSIS causó mucho trabajo duplicado y dolores de cabeza cuando nos arremangamos y ''handcoding'' fue más fácil de lo esperado.

Así que pensaría mucho sobre la flexibilidad al considerar SSIS.


Uso SSIS todos los días para mantener y administrar un gran almacén de datos y un cubo. He estado 100% business intelligence y data warehousing durante dos años. Antes de eso, era desarrollador de aplicaciones .NET para 10.

El valor de SSIS es como un motor de flujo de trabajo para mover datos de un punto a otro con quizás alguna transformación limitada y ramificación condicional en el camino. Si sus paquetes contienen una gran cantidad de secuencia de comandos, entonces su equipo está utilizando SSIS para las tareas incorrectas o no se siente cómodo con SQL o se ha metido en el bombo. Los paquetes de SSIS son muy difíciles de depurar. Los componentes de scripts son una pesadilla absoluta y deben usarse solo para formatear, bucles o como último recurso.

  1. Mantenga sus paquetes simples, tareas SQL y tareas de flujo de datos.
  2. Haga tanto trabajo como sea posible fuera de SSIS, preferiblemente en SQL
  3. Mantenga sus variables en un único alcance global
  4. Mantenga su SQL en variables o procedimientos de almacenamiento, nunca en línea
  5. Mantenga sus valores variables en un almacén de configuración, preferiblemente una base de datos SQL