miércoles, 5 de diciembre de 2012

SSIS y los MessageBox

Sigo en mi proceso de migración de los paquetes versión 2000 a 2008, en está ocasión me encontré con una características que me libera de una preocupación.

En muchas ocasiones cuando he estado desarrollando un paquete he utilizado un MessageBox desde una tarea de script, para depurar los valores de las variables del paquete. En una ocasión le sucedió a un colega que olvidó comentar la linea de código del MessageBox y actualizó el paquete en el ambiente de producción, esto provocó muchos problemas porque el paquete no terminaba de ejecutarse esperando su clic en el botón "Ok" del MessageBox y detenía todo la cola de procesos.

Pero con SSIS 2008 no se presenta ese problema, MS lo hizo más inteligente, ¿Sería  que con mucha frecuencía los desarrolladores dejaban MessageBox en sus paquetes? pues ahora se genera el siguiente error cuando se ejecuta un paquete con MessageBox

Description: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. --->; System.InvalidOperationException: Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation. Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service application.
Cuidado, que si SSIS esta configurado para mostrar la notificaciones el MessageBox se invocará y se quedará esperando su clic para continuar.

El código para ejecutar el paquete:

DTExec 
  /sql Operaciones
  /set \Package.Variables[User::correo].Properties[Value];mi@correo.com
  /set \Package.Variables[User::file].Properties[Value];data.zip
  /set \Package.Variables[User::tipo].Properties[Value];mensual
´