Манипуляции с набором записей в SSIS

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

Если для этой цели я использую наборы записей внутри SSIS, возникают другие проблемы. Насколько я понимаю, компонент «Выполнение SQL» будет повторно инициализировать набор записей при его запуске, поэтому я не могу использовать это для добавления дополнительной строки. Есть ли способ создать соединение OLE DB, которое ссылается на набор записей в памяти?

Есть ли лучший способ достичь этого результата?


person JSacksteder    schedule 22.03.2010    source источник


Ответы (1)


Существует лучший способ. Я бы предложил использовать временную таблицу, как вы сказали, что пробовали/рассматривали. Ключами к использованию временной таблицы с SSIS являются: 1. Вам необходимо установить для свойства «сохранять то же соединение» значение true в диспетчере соединений, иначе «умное» управление соединениями и объединение в пул в конечном итоге приведет к разрыву вашего соединения (и восстановлению его). без временной таблицы) в середине вашего пакета. 2. Вам нужно разработать пакет с уже созданной временной таблицей, даже если вам нужно создать ее как обычную таблицу для проектирования. Когда вы будете готовы к развертыванию, измените имена таблиц в компонентах, которые ее касаются, и установите для свойства DelayValidation этих задач значение False. (Это предотвратит сбой пакета, поскольку таблица не существует при первоначальном запуске пакета.)

person Todd McDermid    schedule 23.03.2010