Как очистить таблицу назначения перед вставкой новых записей в SSIS?

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

Как сначала очистить таблицу назначения (/OLE DB Destination), а затем вставить вновь созданные записи?

В настоящее время обходной путь для этой проблемы выполняет delete from DestTable перед запуском моего пакета.

4 ответов


поместите оператор delete в Execute SQL Task. Затем сделайте его первым компонентом вашего потока. Компонент выглядит примерно так:

enter image description here


создайте задачу Execute SQL. Пусть сначала запустят. Для sqlstatment сделайте.

Truncate table DestTable

использование усеченной таблицы лучше, чем использование delete, поскольку она игнорирует все индексы и просто удаляет все.

Для немного справочной информации. Я попытаюсь объяснить, почему вы должны использовать truncate table вместо delete table. Удалить таблицу-это операция на основе строк, это означает, что каждая строка удаляется. Усеченная таблица-это операция страницы данных, вся страница данных delocated. Если у вас есть таблица с миллионом строк, будет намного быстрее усечь таблицу, тогда это будет использовать delete table statment.


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

MSDN Reference


вам нужно использовать это

truncate table table_name

это опустошает таблицу