#error-handling #ssis
#обработка ошибок #ssis
Вопрос:
Обработчики событий SSIS очень полезны. Обработчики событий могут быть добавлены на уровне самого пакета или для любого исполняемого файла в пакете. Это, наряду со свойством Propagate, очень полезно, чтобы позволить определенным операциям обрабатывать ошибки по-своему. Например, цикл может отреагировать на ошибку, записав, что «В этой строке с ключом [что угодно] возникла проблема», продолжить работу с остальными строками и не запускать обработчик ошибок пакета, который сохраняется для более фатальных, общих ошибок (например, сервер выходит из строя).
Количество мест, где может быть обработчик событий, также является проклятием. В Visual Studio вкладка «Обработчики событий» предназначена для просмотра, добавления или изменения обработчиков событий. Было бы здорово, если бы я хотел добавить обработчик событий в task ExecuteSomeSQL или в последовательности DoSomeThings контейнера — или найти обработчики событий для этих исполняемых файлов, которые, как я уже знаю, существуют.
Но это не подходит для быстрого определения, какие исполняемые файлы в пакете на самом деле имеют какой-либо обработчик событий. Чтобы сделать это, я должен щелкнуть по дереву исполняемых файлов для каждого исполняемого файла и посмотреть, есть ли у каждого что-нибудь в разделе Обработчики событий.
Альтернативное представление сделало бы это намного проще. Либо:
- Показать все существующие обработчики событий не древовидным способом, а просто в виде списка. Пакет.Ошибка onError, Package.OnTaskFailed, (последовательность)doSomeStuff.onPostExecute и т. Д…
- Или разрешите фильтровать древовидное представление, чтобы показывать только исполняемые файлы, у которых есть какой-либо обработчик событий.
Я что-то упускаю, есть ли на самом деле уже хороший способ увидеть это?
Ответ №1:
Проводник пакетов — это то, что вы ищете. Это последняя вкладка для запущенного пакета.
На каждом уровне есть раздел «Исполняемые файлы» и раздел «Обработчики событий». Когда вы развернете любой из них, вы увидите, что там указано.
Мой пример представляет собой цикл Foreach с задачей потока данных внутри него. Поток данных имеет обработчик событий onError с контейнером последовательности и onPostExecute с контейнером последовательности с задачей скрипта внутри. К счастью, вы не можете добавить обработчик событий в обработчик событий (вы могли бы это сделать в более ранних версиях).
В противном случае, я думаю, вы собираетесь написать пользовательский код для обхода вашего пакета.
Комментарии:
1. Спасибо. Это немного проще, поскольку оно находится на главной панели, а не в раскрывающемся списке. Все еще страдает от проблемы «дерева» — отлично, чтобы сделать структуру понятной, но не для быстрого просмотра всех существующих обработчиков. Мне придется смириться с этим до спокойного дня, когда я смогу поработать с каким-нибудь пользовательским кодом (и сначала преодолеть свою аллергию на XML …)