2009-03-17 12 views
20

¿Cómo depuro código .NET escrito dentro de una tarea de script en un paquete SSIS? El entorno de desarrollo permite colocar un punto de interrupción, sin embargo, no me lleva al código como lo haría en la programación regular de .NET durante la depuración.Depurando en SSIS

Además, no entiendo cómo agregar las variables del paquete SSIS a la ventana de depuración del reloj.

Actualmente, una cosa que pensé fue el uso de msgbox. Pero eso no es un sustituto de una depuración completa utilizando el entorno de desarrollo. Cualquier ayuda es apreciada. Gracias.

Respuesta

9

Depurar paquetes de SSIS dentro del entorno de BIDS no es el mismo juego de pelota que trabajar con Visual Studio.

Puede que le resulte útil consultar la referencia Debugging How-To-Topics(SSIS)

Si ha desarrollado su propio componente personalizado, es decir, desde dentro de Visual Studio, entonces usted debería ser capaz de depurar la funcionalidad específica de ese componente dentro del Visual Entorno de estudio, antes de hacer que el componente esté disponible para su uso dentro de BIDS.

No puede depurar el código .NET interno que compone cualquiera de los otros componentes SSIS integrados (es decir, la tarea FTP) dentro de BIDS, por lo que dudo que un componente personalizado sea diferente.

+0

http://msdn.microsoft.com/en-us/library/ms140033.aspx Muy inconveniente. Sí, BIDS no es realmente como VS. – Steam

1

Creo que SSIS admite y se detiene en el punto de interrupción en Script Task (en Control Flow). No es compatible con la Transformación de scripts (en el flujo de datos). De hecho, son restricciones muy desafortunadas.

SSIS muestra valores variables en la ventana de observación cuando se detiene en un punto de interrupción. No estoy seguro del punto de interrupción del script, pero los puntos de interrupción del SSIS (preprocesado, etc.) funcionan. Pero necesita un punto de interrupción: no puede ver el valor de la variable en un momento aleatorio sin un punto de corte.

29

Nota: Si está ejecutando en x64, debe cambiar el proyecto (SSIS) Propiedad de depuración Run64BitRuntime a falso.

Después de eso, podrá depurar una tarea de script en .net y romper el código en la secuencia de comandos.

Por cierto John Sansom no te parecen haber leído esta parte de la pregunta: ¿Cómo puedo depurar código .NET escrita dentro de una tarea de la escritura en un paquete SSIS? Es una tarea de script, no una depuración de SSIS normal.

Espero que esto ayude.

+7

Cambiar la propiedad Debug Run64BitRuntime a false fue la respuesta. Buena esa. +1 – Deano

+0

Después de romperme los pelos por un día, esta fue la solución. Actualicé las ofertas de 2013 a las ofertas de 2015. Creo que la actualización debe haber restablecido la propiedad a 64 bits. – Simon

1

Puede adjuntar un depurador a (casi) cualquier proceso para el que está escribiendo código .NET incorporando una llamada al Debugger.Break en el punto apropiado en su fuente.

Citando MSDN:

Si ningún depurador asociado, se pide a los usuarios si quieren adjuntar un depurador. En caso afirmativo, se inicia el depurador. Si se conecta un depurador, el depurador se señala con un evento de punto de interrupción de usuario y el depurador suspende la ejecución del proceso como si se hubiera alcanzado un punto de interrupción del depurador.

Lo he usado para depurar todo tipo de cosas, incluido el código C# incrustado en SSIS.

Actualizado: redacción modificada ya que esta ya no es una técnica teórica, sino una que he usado.

+0

Agregar esta línea no tiene ningún efecto en una tarea de secuencia de comandos SSIS – DaveRead

+1

La llamada relacionada 'Debugger.Break' funciona, pero a veces se bloquea la depuración en el nivel IL en lugar de C#. – Bevan

+0

¡Esto funcionó perfectamente para mí! Gracias Bevan. –

0

aunque el componente de script en el flujo de datos de tareas no permitirá ningún tipo de depuración que no sean soluciones como escribir regularmente los progresos realizados, los cuadros de mensaje, etc

El artículo de control de flujo de tarea Script permitirá a los desarrolladores para depurar el código SSIS

Encontrado esto recientemente. :)

0

Asegúrate de que también ejecutas el paquete completo. El depurador de los puntos de interrupción del paquete no funcionará hasta que lo haga.

Las tareas del script de depuración funcionan de manera similar.