SSIS - пропустить отсутствующие файлы - PullRequest
2 голосов
/ 14 июня 2010

У меня есть пакет служб SSIS 2008, который вызывает около 25 других пакетов служб SSIS.

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

Как можно разрешить сбой дочернего пакета (из-за отсутствия файла), но позволить продолжить работу остальной части родительского пакета?

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

Код предупреждения служб SSIS DTS_W_MAXIMUMERRORCOUNTREACHED.Метод Выполнение завершился успешно, но количество возникших ошибок (2) достигло максимально допустимого значения (1);приводя к провалу.Это происходит, когда количество ошибок достигает числа, указанного в MaximumErrorCount.Измените MaximumErrorCount или исправьте ошибки.

Редактировать: для failpackageonfailure и faulparentonfailure везде все установлено значение false.

Ответы [ 4 ]

1 голос
/ 14 июня 2010

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

Существуют значения MaximumErrorCount на уровне контейнеров последовательностей и уровня пакетов. Если вы используете это, убедитесь, что ваши значения синхронизированы, потому что настройки уровня пакета имеют приоритет.

Другим вариантом является ForcedExecutionValue.

Чтобы настроить это, загрузите вкладку свойств для каждого контейнера и:

1) ForceExecutionValue to TRUE

Это заставит контейнер возвращать любое значение, которое вы указали в переменной (см. Шаг # 2), несмотря на результат выполнения задачи (й).

2) ForcedExecutionValue to 0

Это действует как возвращаемое значение для этой задачи и устанавливает его в 0 (true, думайте, что "верните 0", как в C ++).

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

Это приведет к посылке

  • Загрузите свойства, используя «ForcedExecutionValue» в 0, затем установите Force
1 голос
/ 14 июня 2010

Я не пробовал это, но вот как я бы подошел к этому. Создайте переменную для имени файла и имени дочернего пакета. Используйте контейнер For Each Loop. Сделайте так, чтобы он прошел через расположение файлов и извлекал имена файлов по одному. Используйте имя файла, чтобы изменить дочернюю переменную имени пакета. В контейнере есть задача для запуска дочернего пакета и динамическое задание имени на основе значений переменной имени дочернего пакета.

Тогда он должен только попытаться запустить дочерние пакеты, которые имеют соответствующие файлы.

1 голос
/ 14 июня 2010

в свойствах задачи выполнения пакета вы можете установить failpackageonfailure и faulparentonfailure.я не работал с ними, но вы можете поиграть с ними, чтобы получить желаемые результаты.

0 голосов
/ 24 июня 2010

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

Этот метод дал нам желаемые результаты обработки нескольких файлов с разными вхождениями исходных файлов.

спасибо Правь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...