Транзакции служб SSIS - большие наборы записей - PullRequest
0 голосов
/ 28 мая 2009

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 28 мая 2009

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

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

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

0 голосов
/ 28 мая 2009

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

...