Вы часто перемещаете слишком много данных в ETL, чтобы использовать транзакцию SQL (журнал должен хранить ВСЕ данные для отката, помните). Я предпочитаю разрабатывать пакеты таким образом, чтобы их можно было повторно запускать без разрушения. В идеале они должны быть установлены так, чтобы, если они умирают в середине потока, вы могли просто запустить их, и они продолжат где-то примерно там, где они остановились. Иногда за это снижается производительность, но я думаю, что оно того стоит.
Технически вы можете свернуть пакеты в одну транзакцию; практически, может и нет.