Я новичок в SSIS, и мне нужно создать пакет SSIS для переноса данных из одной базы данных в другую. Я хочу начать с пакета, проверяя, существует ли в базе данных назначения несколько таблиц. Если они существуют, я хочу усечь их, если они не хотят их создавать. Какой лучший подход к этому.
У меня есть простой запрос в самом верху пакета, чтобы вернуть все таблицы в целевой базе данных
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
Как передать эти результаты на следующий шаг, чтобы проверить, содержится ли какой-либо из этих имен таблиц в списке или массиве имен таблиц
благодаря
Вам нужно использовать Execute SQL Task
с чистым кодом T-SQL. (Точнее: выполнить задачу SQL или выполнить задачу задания T-SQL).
В Execute SQL Task
вам нужно указать, какой диспетчер подключений использовать, и SQL-код для запуска.
Код внутри задачи должен выглядеть следующим образом:
IF EXISTS(
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE')
THEN
TRUNCATE TABLE [BASE TABLE]
ELSE
CREATE TABLE [BASE TABLE] (...)
END
Эта задача указана в Control flow
управления пакета и должна включать ограничение для ее запуска до того, как любая задача потока данных попытается использовать затронутые таблицы.
Помните, что не все таблицы могут быть усечены (если у них есть FK), и что, если вы используете PCK IDENTITY
, они будут увеличиваться при каждом запуске вашего пакета. Таким образом, возможно, вы должны DROP
таблицы и CREATE
затем во всех исполнениях пакета. Примите во внимание, что вы все равно должны писать сценарии CREATE TABLE
. (Конечно, вы должны проверить, существует ли таблица, прежде чем отбрасывать ее).
Я не уверен, что это отличный способ сделать это из коробки в SSIS. Однако существует альтернативное решение BIML. Он получил небольшую кривую обучения, но это действительно просто, как только вы пройдете через это.
На самом деле, этот учебник кажется именно тем, что вы пытаетесь сделать. И хорошая вещь о BIML заключается в том, что вы пишете его один раз, и если вам когда-нибудь понадобится это, просто пару быстрых обновлений для создания новых пакетов. Супер мощный. Попробуйте. Я буду вам удивлен. http://bimlscript.com/Walkthrough/Details/73