Набор данных SQL с произвольным числом столбцов (службы SQL Server Integration Services [SSIS])

Предыстория:

Я пытаюсь перебрать список файлов .sql, выполнить каждый файл, сохранить результат каждого запроса в текстовый файл с разделителями и специальным именем. Прямо сейчас я добиваюсь этого, используя полностью автономную программу на C#. Я новичок в SSIS, но очень хорошо разбираюсь в C#. Забегая вперед в ИТ-отделе, в котором я буду работать, SSIS является предпочтительным решением, поэтому объединение всего этого в гигантское действие сценария (к сожалению) не является решением.

Проблема:

Ниже приведено изображение моего потока управления.

Управление потоком

Желаемый эффект заключается в следующем:

  1. Foreach перебирает папку с файлами .sql.
  2. Задача «Загрузить SQL» присваивает содержимое текущего файла .sql переменной.

    (Оба этих шага работают)

  3. Задача потока данных:

    Поток данных

    1. executes the SQL in the variable AND!
    2. сохраняет результат произвольного размера в переменную или файл.
  4. (Вернемся к потоку управления:) Отсутствует: Сохранить отчет с другим разделителем и другим именем файла.

  5. Отчет о выгрузке запускает WinSCP, чтобы захватить файл и поместить его в n > 1 назначенное место(я).

Вопрос:

Как сделать так, чтобы поток данных не обращал внимания на количество столбцов? Например, в отчете 1 пять столбцов, в отчете 2 – 50, а в отчете 3 – 25. Все это в порядке. Меня не волнует, сколько у него столбцов, и в этом случае меня действительно меньше волнуют метаданные.

Я могу сделать это с помощью C#, просто сказав: «Вот таблица данных, заполните ее». Службам SSIS, по-видимому, не хватает этой способности адаптироваться к количеству столбцов. Да? Нет? Скажем, к черту все и просто сделать это с помощью объекта сценария? Какова полученная мудрость о том, что здесь делать?

Если этот вопрос выявит какое-то фундаментальное непонимание того, как работает SSIS, не стесняйтесь комментировать и это.

Заранее спасибо!


person TRAL    schedule 13.06.2014    source источник
comment
Если вы уже знаете, как это сделать, напишите сценарий. SSIS с произвольными столбцами сложна в 2008 году. Я не знаю об этой версии.   -  person Eric Hauenstein    schedule 13.06.2014


Ответы (1)


Я бы отказался от всего этого подхода — это не путь к успеху с SSIS.

Службы SSIS кэшируют метаданные потока данных (например, столбцы, типы данных, даже точность типов данных), и изменение этих метаданных обычно подразумевает изменение дизайна пакета.

Вместо этого я бы создал пакет SSIS с 3 задачами потока данных или столько, сколько у вас есть вариантов (по одной на сценарий «Отчет»/SQL). Внутри каждой задачи потока данных будет источник OLE DB и назначение плоского файла.

Сила этого становится очевидной во время выполнения — SSIS может выполнять множество задач потока данных параллельно (значение по умолчанию — # ядер * 2) и выводит данные текстового файла с молниеносной скоростью по сравнению с C#.

person Mike Honey    schedule 17.06.2014