Транзакции SSIS - большие наборы записей

Мне интересно, как SSIS обрабатывает транзакции с большими наборами данных. У меня есть «большой» набор данных из примерно 150 000 строк, каждая из которых должна быть проверена на соответствие бизнес-правилам как часть ETL от промежуточной базы данных до действующей базы данных.

Если какая-либо из записей не соответствует их бизнес-правилам, никакие записи не должны попадать в действующую базу данных (т. Е. Откат транзакции).

У меня вопрос, как SSIS обрабатывает большие транзакции - или может? Будет ли он обрабатывать ввод 149 999 записей, а затем откатить всю партию, если последняя запись не соответствует его правилам бездействия? Или есть лучшая практика для выполнения этого типа операции передачи больших данных?

В настоящее время я думаю о том, чтобы обрабатывать каждую запись в контейнере последовательности на уровне потока управления с включенными в контейнере настройками трансляции. Все проверки будут выполняться в контейнере последовательности, и вставка также будет сделана в этом контейнере.


person Rosstified    schedule 28.05.2009    source источник


Ответы (2)


SSIS может достаточно хорошо обрабатывать транзакции. Там, где он падает, транзакции с несколькими базами данных или серверами с использованием MSDTC (все еще работает, но есть некоторые предостережения).

Вы можете установить параметр TransactionOption для задачи потока данных как «Обязательный». Это заставит SSIS зарегистрировать его в транзакции. Точно так же вы можете указать TransactionOption других задач как NotSupported (например, обновить таблицу статуса, чтобы она завершилась неудачно).

Фактически вы не можете обрабатывать каждую запись в контейнере последовательности (если вы не перебираете задачу потока данных несколько раз, что, вероятно, не лучший способ). Вместо этого я бы поставил поток данных в требуемый вариант транзакции, и тогда он должен завершиться неудачно, если какие-либо записи в вашем потоке данных завершатся неудачно, и откатит всю транзакцию.

person Dane    schedule 28.05.2009

Я согласен с датчанином, у SSIS и SQL-сервера не должно возникнуть проблем с таким количеством транзакций, если для этого есть соответствующая инфраструктура.

person Jase Whatson    schedule 28.05.2009