Привет, я использую SSIS (MSSQL) для копирования данных между несколькими таблицами. Это прекрасно работало до недавнего времени, когда S.A.P. команда продолжает обновлять схему таблиц, не сообщая мне об этом.
У меня есть несколько таблиц, в которые они продолжают добавлять столбцы; это, в свою очередь, приводит к сбою моей работы SSIS по копированию данных.
Есть ли в SSIS способ просмотра исходной таблицы и корректировки целевой таблицы для отражения изменений на лету?
Я новичок в SSIS и не возражаю против запуска сценария из графического интерфейса, но мне было интересно, была ли это опция в графическом интерфейсе, с которым я уже знаком.
Короче говоря, могу ли я в SSIS разрешить добавление новых столбцов в исходные таблицы и автоматически обновлять целевые таблицы, чтобы мои задания не срабатывали? (О, и сопоставить источник с целевыми таблицами автоматически)?
Я предположил, что это так, как сейчас. Единственная проблема с тем, что вы предлагаете, если я понимаю вас правильно. Я хотел бы, чтобы дополнительные столбцы были уведомлены о них и чтобы они правильно отображались.
Вам нужно будет включить новые столбцы в поток данных, то есть источник и место назначения (включить и сопоставить их). Таким образом, вы НЕ МОЖЕТЕ автоматизировать то, что ищете в SSIS. Надеюсь, поможет.
Посмотрите на Скрипт BiML, который позволяет вам создавать и выполнять пакеты SSIS динамически на основе метаданных, доступных во время выполнения.
но не во время выполнения, чего хочет OP IIUC
@ user1443098 Да, во время выполнения. BiML позволяет отображать элементы метаданных на элементы пакета. Когда «пакет» запускается, он смотрит на значение элементов метаданных (например, какие столбцы сейчас находятся в таблице), динамически создает пакет и запускает его.
Прости, Таба, я так не думаю. BiML - это инструмент времени разработки, вы используете его для создания пакетов. Затем эти пакеты продвигаются в серверную среду (например, SSISDB, Msdb или файловую систему), и тогда все следы BiML исчезают. Он не может сделать то, что вы предлагаете, потому что его больше нет на картинке. Biml - это плагин Visual Studio. Больше не надо.
@ user1443098 Простите, я имел ввиду "Скрипт BiML". Я часто их объединяю. Отредактирую свой ответ.
Это также не работает во время выполнения. Это (потрясающий!) Инструмент для разработки. IIUC, вы утверждаете, что можете развернуть пакет в SSISDB, например со встроенным скриптом BiML и что при запуске пакета (с использованием DTSEXEC) BiML каким-то образом будет творить чудеса. Я бы хотел, чтобы это было правдой! Увы, это не так.
@ user1443098 Нет, я этого не утверждаю. Я утверждаю, что вы можете написать программу, использующую скрипт BiML, и ваше задание может запускать эту программу, и эта программа может создавать пакет SSIS на лету на основе метаданных во время выполнения, а затем выполнять его и уничтожать. И он может делать это неоднократно по расписанию.
Интересно, а не нужно ли устанавливать BiML на сервер? Мне было бы трудно получить одобрение этого в моем магазине. Может быть проще просто написать программу так, чтобы она делала то, что вы хотите, забыв о SSIS и BiML.
Короткий ответ: нет. SSIS статичен по отношению к схемам таблиц. Однако можно написать компонент источника SSIS, который анализирует текущие схемы, но всегда возвращает один и тот же набор столбцов. Похоже, вам нужна динамика как на входе, так и на выходе.