В настоящее время нет способа запустить цикл по каждому элементу в «параллельном режиме».
Лучшее, что я могу придумать, - это перестроить вашу архитектуру в гибкую «потоковую» модель потоков, где вы можете распараллелитьнезависимо.
Для этого потребуются два пакета служб SSIS.Один для снабжения рабочих подразделений, а другой - для их работы.Таким образом, пакет «controller» будет выполнять цикл foreach для TableA, собирая все необходимые ему значения.Затем эти значения будут вставлены в таблицу «работа для выполнения».«Рабочий» пакет будет состоять из цикла For Loop, внутри которого у вас будет задача «Выполнение SQL», которая запрашивает таблицу «работа, которую нужно выполнить» для первой строки, над которой не работали, и если бы она нашла такойстрока, пометьте его как работающий (все внутри транзакции, чтобы избежать коллизий).Тогда у вас будет «рабочий блок», с которым вы будете работать, или нет.Ограничение приоритета для вашей следующей задачи будет выполняться только в том случае, если на самом деле есть какие-то инструкции.Выражение Eval вашего For Loop может быть сработано так, чтобы останавливаться, когда вы не видите никаких новых рабочих единиц (хотя вам может потребоваться задержка, чтобы убедиться, что ваши рабочие не были быстрее контроллера).
Toзапустив все это, вы запустите контроллер (в задании агента), затем запустите несколько рабочих (один и тот же пакет, разные задания) - столько, сколько вы хотели.