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

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

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

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

Ответы

Ответ 1

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

enter image description here

Ответ 2

Создайте задачу Execute SQL. Пусть он работает первым. Для sqlstatment do.

Truncate table DestTable

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

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

Ответ 3

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

Ссылка MSDN

Ответ 4

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

truncate table table_name

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