Ответ 1
Используя Контейнеры последовательности (последовательность, цикл Loop, ForEach Loop) в SSIS, вы можете использовать свойство TransactionOption. Это позволяет указать транзакционное поведение задач в вашем пакете и сам пакет для отката, если какие-либо задачи не выполняются.
Например, если вы вставляете свои задачи в контейнер последовательностей и устанавливаете TransactionOption=Required
и настраиваете все задачи в контейнере на TransactionOption=Supported
, все они присоединятся к транзакции, запущенной в контейнере последовательностей, и если какой-либо сбой, транзакция будет отменена.
Здесь вы можете прочитать объяснение свойства TransactionOption и/или следовать по здесь, чтобы увидеть как реализовать это.
EDIT: Еще один хороший прохождение (со скриншотами) здесь