2013-08-04 2 views
1

SSIS Сценарийобработки в SSIS пакет Dynamic Connection

У меня есть переменная SQL объекта типа Exception. Он содержит все соединения с разными серверами/базами данных. Я хочу подключиться к этим базам данных один за другим и запустить запрос.

Ожидаемого Exception Handling

Если менеджер соединения SSIS (Динамическое соединение ясли) не может найти связь с сервером (возможно, сервер выключен) Я хочу, чтобы пропустить эту связь (база данных/сервер) и запишите это в таблицу и перейдите к следующему соединению (База данных/Сервер). Пакет SSIS не должен падать.

Моя реализация

Я успешно настроил пакет SSIS Использовать Connection Manager (Диспетчер подключений Dynamic) и цикл Foreach в цикле через переменную SSIS объекта типа. но я не могу пропустить Connection, если сервер/база данных не найден. он генерирует ошибку, из-за которой сервер/databsse не найден/проблема с соединением и пакет SSIS не работает.

мой опыт в SSIS является одна неделя

Любая помощь будет оценена.

ответ

0

Я не думаю, что его можно продолжить выполнение пакета, как только он встретит ошибку. Вы должны контролировать это поведение через таблицу SQL Server (или любую другую таблицу, если на то пошло).

Как только пакет выходит из строя, вы можете установить флаг в таблице, говорящий о том, что пакет завершился неудачно. В следующий раз, когда пакет запускается, вы можете начать с этого момента и продолжить выполнение. Но автоматическое пропущение вниз сервера любопытно вытаскивает кролика из шляпы.

Другой способ, которым вы можете это сделать, - выполнить ping каждый сервер перед началом работы в отдельном пакете и сохранить результаты ping в таблице. Выбирайте только те записи (серверы), результаты которых были положительными. В противном случае просто пропустите сервер.

+0

Я сделал это. Использование сценариев.Я использовал задачу сценария для подключения к серверу. Я добавил класс диспетчера соединений SSIS в try catch loop и назвал соединение для этого. и когда он бросает мне исключение, то есть он не может найти сервер, я его поймаю и верну (int) Scriptresult.succes, чтобы он не остановил выполнение процесса , вы говорите о контрольных точках в SSIS. они используются для начала из состояния, которое они оставили. –

+0

Приятно знать, что вы обошли это, но я не говорил о контрольно-пропускных пунктах. Неважно. У вас есть решение! – rvphx

+0

хорошо и спасибо за помощь. –

0

Как насчет настройки -> исполнение Force Результат свойство задачи к успеху

0

Я искал в таком же положении тоже. Кажется, что обычный OnError Eventhandling не работает для проблем, возникающих при подключении к исходной БД.

Существует другое обходное решение, которое я хотел упомянуть. Вы можете обработать ошибку в Задаче потока данных (OnError Eventhandler, установить «Перемещение системы» в этом Eventhandler на false). Я думаю, что это все еще необходимо, но не уверен. Я также использую его для регистрации исключения.

Впоследствии вы можете установить MaximumErrorCount в ForEachLoop на «0» (что означает неограниченный). Я не совсем уверен, почему он работает, но, пытаясь найти способ справиться с описанным вами сценарием, я нашел это.

==

Подобно тому, как интересное наблюдение: Для целей отладки я добавил OnError EventHandler в цикл просмотр и установить точку останова в фиктивных сценариях. Это никогда не достигалось. Тем не менее, ForEachLoop все время сработал, пока я не установил MaximumErrorCount на 0.

Смежные вопросы