2016-05-31 6 views
1

Я пишу пакет SSIS, который читает записи из одной таблицы и возвращает 20 имен SQL-серверов, следующие шаги: foreach loop, который извлекает объекты базы данных и создает файл этого сценария db. Даже это сделано с успехом, но вопрос в том, что требуется слишком много времени, которое составляет ок. 3-4 часа для завершения.SSIS параллельная обработка foreach loop

Поток Пакет,

  • SQL Задача, которая возвращает 20 SQL серверов - выполнение одного запроса
  • Второй является Foreachпетли, который выполняет итерацию по всем объекте с одного сервера и генерирует файл, который хранится в местоположении.

Вопрос заключается в том,

  • Можем ли мы сократить время от 3 до 4 часов к минимуму?
  • Возможно ли, чтобы цикл foreach выполнялся параллельно?

Я пытаюсь разделить одну петлю на на Трехпетлевой, таким образом, я надеюсь, что уменьшит 3 до 4 часов в 1 ч

Любые предложения очень ценятся.

Спасибо!

+0

Почему вы не используете SQL Server встроенные механизмы, как SQL Server Utility, чтобы запустить этот запрос аудита на всех серверах одновременно? То есть, если утилита SQL Server не * уже * собирает нужную информацию? –

+0

У меня есть пакет и его изменение, чтобы уменьшить это до минимального времени. и он выполняется из SQL Agent Job еженедельно. –

+0

Да, можно параллельно запускать несколько циклов foreach. Остальная часть вашего вопроса слишком широка. –

ответ

1

В SSIS нет встроенных функций параллельного цикла foreach. Это означает, что вам нужно передать код, в этом случае есть несколько подходов:

  • Добавить ~ 20 задач в цикл foreach, каждый из которых основан на другой переменной. Это может быть сгенерировано с использованием BIML, чтобы упростить создание и согласование.
    • создать задачу сценария, которая выполняет дочерний пакет N раз. Существует множество примеров параллельного выполнения в .net в Интернете.

м

+0

Я сделал те же данные, что и переменные разностей, и разделил их на 3 цикла в одном контейнере Sequence, но без помощи, он показывает, что я запускаю все с цветами GREEN и YELLOW, но только один цикл генерирует файлы, а не другие. –

+0

Это должен быть цикл foreach, а не только обычный контейнер последовательности –

+0

Да, это цикл foreach внутри последовательности contianer –

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