Hace unos días estuve realizando una formación sobre SQL Server 2005 Integration Services, o lo que es lo mismo, la nueva herramienta de desarrollo de los antiguos DTS (Data Transformation Services) de SQL Server 2000. Mediante esta herramienta se pueden crear de forma fàcil y rápida soluciones de transformación de datos, que pueden llegar una complejidad importante, pero que pueden ayudar, y mucho, a la automatización de tareas de mantenimiento de datos (no deja de ser una herramienta ETL: Extract, Transform, Load). Mediante Visual Studio 2005 o 2008 es posible desarrollar una solución de Integration Services, para después probarla antes de subirla a un entorno de producción. Cuando la solución es correcta, se puede programar para que se ejecute con cierta periodicidad, o bien se puede ejecutar manualmente.
El objetivo de este post no es más presentar una posible solución para ejecutar una paquete de Integration Services desde una aplicación .NET (Windows), de forma que la ejecución del paquete se puede llevar a cabo desde una aplicación externa (y no desde el propio SQL Server). Los pasos a seguir serían los siguientes:
1) Añadir una referencia a la librería Microsoft.SqlServer.ManagedDTS:
2) Añadir el siguiente bloque de código (Visual Basic .NET) en cualquier evento (el click de un botón, por ejemplo):
1: Dim appDTS As New Microsoft.SqlServer.Dts.Runtime.Application
2: Dim paquete As Microsoft.SqlServer.Dts.Runtime.Package
3: Dim resultado As Microsoft.SqlServer.Dts.Runtime.DTSExecResult
4: paquete = appDTS.LoadFromSqlServer("AgregadoVentas", "ferran-2a90840e", String.Empty, String.Empty, Nothing)
5: resultado = paquete.Execute()MessageBox.Show(resultado.ToString)
En este caso, llamamos a un paquete llamado AgregadoVentas, que se encuentra almacenado en el servidor de SQL Server ferran-2a90840. De esta forma tan simple podremos llamar a cualquier paquete almacenado, provocando su ejecución de forma instantánea. Finalmente, se mostrará por pantalla el resultado de la ejecución del paquete.
Así mismo, cabe indicar que en este caso estamos cargando un paquete almacenado en el servidor de SQL Server, y por este motivo utilizamos el método LoadFromSqlServer, perteneciente a la clase Dts.Runtime.Application. Si quisiéramos cargar un paquete almacenado en el sistema de ficheros, deberíamos utilizar el método LoadPackage.
¡Espero que os sirva!