2009-03-17 4 views
20

Как отлаживать код .NET, написанный в задаче сценария в пакете SSIS? Среда разработки позволяет разместить точку останова, но не приводит меня к коду, как это было бы при регулярном .NET-программировании во время отладки.Отладка в SSIS

Кроме того, я затрудняюсь понять, как добавить переменные пакета SSIS в окно отладочного окна?

В настоящее время я понял, что использование msgbox. Но это не замена полноценной отладки с использованием среды разработки. Любая помощь приветствуется. Благодарю.

ответ

9

Отладка пакетов SSIS в среде BIDS - это не та же игра, что и в Visual Studio.

Вы можете найти полезный проконсультироваться Справочной Debugging How-To-Topics(SSIS)

Если вы разработали свой собственный компонент, то есть изнутри Visual Studio, то вы должны быть в состоянии отладки определенных функций этого компонента в Визуальном Studio, прежде чем сделать компонент доступным для использования в BIDS.

Вы не можете отлаживать внутренний код .NET, который составляет любой из других встроенных компонентов SSIS (т. Е. Задачи FTP) в BIDS, поэтому я сомневаюсь, что пользовательский компонент будет другим.

+0

http://msdn.microsoft.com/en-us/library/ms140033.aspx Настолько неудобно. Да, BIDS действительно не похож на VS. – Steam

1

Я думаю, что SSIS поддерживает и останавливается в точке останова в задании скрипта (в потоке управления). Он не поддерживает его для преобразования сценариев (в потоке данных). На самом деле это очень неудачные ограничения.

SSIS показывает значения переменных в окне часов, когда вы останавливаетесь на контрольной точке. Я не уверен в контрольной точке скрипта, но точки останова SSIS (на-pre-execute и т. Д.) Работают. Но вам нужна точка останова - вы не можете смотреть переменное значение в произвольный момент без точки останова.

29

Примечание: Если вы работаете на x64, вы должны изменить проект (SSIS) Debug propertytie Run64BitRuntime на false.

После этого вы сможете отладить задачу сценария в .net и разбить код в скрипте.

Кстати Джон Sansom DonT по всей видимости, прочитал эту часть вопроса: Как отлаживать .NET код, написанный в рамках задачи сценария в пакете SSIS? Его задача сценария, а не обычная отладка SSIS.

Надеюсь, это поможет.

+7

Изменение свойства Debug Run64BitRuntime на false было ответом. Хороший. +1 – Deano

+0

После разрыва моих волос в течение дня это было решением, я повысил ставки до 2013 года до ставок 2015 года. Я думаю, что обновление должно было сбросить свойство до 64 бит. – Simon

1

Вы можете подключить отладчик практически для любого процесса, для которого вы пишете код .NET, путем встраивания вызова в Debugger.Break в соответствующем месте вашего источника.

Цитирование MSDN:

Если отладчик не прилагается, пользователи просят, если они хотят, чтобы присоединить отладчик. Если да, отладчик запущен. Если отладчик подключен, отладчик сигнализируется событием прерывания пользователя, и отладчик приостанавливает выполнение процесса так же, как если бы была удалена точка останова отладчика.

Я использовал это, чтобы отлаживать всевозможные вещи, включая код C#, встроенный в SSIS.

Обновлено: Измененная формулировка, поскольку это уже не теоретическая техника, а одна, которую я использовал.

+0

Добавление этой строки не влияет на задачу сценария SSIS – DaveRead

+1

Связанный с вами вызов «Debugger.Break» работает, но иногда вы задерживаетесь с отладкой на уровне IL вместо C#. – Bevan

+0

Это отлично сработало для меня! Спасибо, Беван. –

0

хотя компонент сценария в потоке данных задачи не позволят какой-либо формы отладки, кроме обходных путей, как писать прогресс регулярно, окно сообщений и т.д.

Целевой Script Control Flow Item позволит разработчик для отладки SSIS кода

Обнаружено это недавно. :)

0

Убедитесь, что у вас также работает полный пакет. Отладчик для пунктов разрыва пакета не будет пинать до тех пор, пока вы это сделаете.

Отладка сценариев работает аналогичным образом.