Ну, лично я не загружаю импортированные данные непосредственно в мои таблицы prod, и я отсеял все записи, которые не пройдут, пока я не доберусь до места загрузки. Некоторые виды ошибок полностью уничтожают импорт, а другие могут просто отправить запись в таблицу исключений, которая будет отправлена обратно поставщику и исправлена для следующей загрузки. Обычно у меня есть логика, которая определяет, есть ли слишком много исключений и убивает пакет.
Например, предположим, что город является полем для повторного использования в вашей базе данных и в файле, состоящем из 1 000 000 записей, у вас есть десять, у которых нет города. Вероятно, лучше всего отправить их в таблицу исключений и загрузить остальные. Но предположим, у вас есть 357 894 записей без города. Тогда вам может потребоваться провести беседу с поставщиком данных, чтобы данные были зафиксированы перед загрузкой. Это, безусловно, повлияет на prod less, если вы сможете определить, что файл не используется, прежде чем пытаться повлиять на производственные таблицы.
Кроме того, почему вы делаете эту запись за раз? Вы можете часто выполнять намного быстрее при обработке на основе набора, особенно если вам уже удалось очистить данные заранее. Теперь вам все равно придется делать партиями, но одна запись за раз может быть очень медленной.
Если вы действительно хотите отбросить все это, если какие-либо ошибки детали, да, вам нужно использовать транзакции. Если вы сделаете это в SSIS, вы можете поместить транзакции только в ту часть пакета, где вы воздействуете на таблицы prod, и не беспокоиться о них при размещении данных и очистке частей.