Ответ 1
Поместите инструкцию delete в Execute SQL Task
. Затем сделайте его первым компонентом вашего потока. Компонент выглядит примерно так:
Я использую SSIS для генерации и преобразования новых данных для последующего использования в новой системе. У меня проблема при каждом запуске моего пакета SSIS, он продолжает вставлять новые записи в мои таблицы назначения.
Как я могу сначала очистить таблицу назначения (/OLE DB Destination), а затем вставить вновь созданные записи?
В настоящее время обходной путь для этой проблемы выполняет delete from DestTable
перед запуском моего пакета.
Поместите инструкцию delete в Execute SQL Task
. Затем сделайте его первым компонентом вашего потока. Компонент выглядит примерно так:
Создайте задачу Execute SQL. Пусть он работает первым. Для sqlstatment do.
Truncate table DestTable
Использование таблицы усечений лучше, чем использование delete, поскольку оно игнорирует все индексы и просто удаляет все.
Для получения дополнительной информации. Я попытаюсь объяснить, почему вы должны использовать таблицу обрезания вместо таблицы удаления. Удалить таблицу - это операция на основе строки, это означает, что каждая строка удаляется. Таблица усечения - это операция с страницей данных, на которой разворачивается вся страница данных. Если у вас есть таблица с миллионом строк, она будет намного быстрее обрезать таблицу, тогда было бы использовать статут таблицы удаления.
Остерегайтесь использования таблицы Truncate, она работает лучше по указанным причинам. Однако для его учетной записи SSIS System также требуются дополнительные привилегии. Вы должны быть уверены, что они доступны вам в Production, иначе вам придется использовать Delete.
вам нужно использовать этот
truncate table table_name
это опустошает таблицу