Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top