Зацикливание в SSIS через исходные таблицы

у нас есть сервер БД, который содержит несколько экземпляров одной и той же базы данных. Перечисляются все базы данных (например, от MyDB001 до MyDB006). Все экземпляры имеют одинаковые таблицы.

Для целей отчетности мы хотели бы извлечь все эти БД в одну БД.

Текущее решение состоит в том, чтобы иметь несколько соединений в SSIS — для каждой БД одно выделенное соединение. Также существует поток данных для каждой БД для извлечения таблиц. Это приводит к изменению нескольких потоков данных, если нам потребуется изменить извлечение.

Есть ли умный способ зациклиться на базе данных? Например. использовать параметр, чтобы получить соединение с БД, а затем иметь один поток данных, использующий это параметризованное соединение, для получения данных?

Спасибо за любую подсказку заранее.

Глупый Уокер


person SillyWalker    schedule 12.12.2016    source источник


Ответы (1)


Да, ты можешь. Вы начинаете только с потока данных с источником и местом назначения. щелкните фон в потоке управления, свойствах, измените уровень защиты, чтобы не сохранять конфиденциальность.

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

играйте с ним, пока не поймете, что означает выше, и вы не сможете изменить выражение строки подключения, чтобы оно указывало на любую исходную таблицу. после того, как вы это поймете, вы можете начать циклическую часть. Добавьте две переменные, одна — cs (строка типа), это будет ваша динамическая строка подключения к базе данных, вторая — rs (тип объекта), она будет содержать набор соединений с базой данных. В потоке управления добавьте задачу выполнения sql, контейнер цикла foreach, подключите задачу выполнения sql к контейнеру, перетащите поток данных в контейнер. откройте задачу выполнения sql, на общей вкладке, sqlstatement, вы определяете свою коллекцию соединений с базой данных примерно так: выберите val из таблицы (tal хранит все ваши соединения с базой данных в столбце val). В наборе результатов выберите Полный набор результатов. на вкладке набора результатов измените имя результата на 0, переменную на переменную rs. Это сопоставит коллекцию строк подключения к базе данных с переменной rs.

Затем дважды щелкните контейнер цикла foreach, чтобы отредактировать его. На вкладке коллекции выберите Foreach ADO Enumerator, в исходной переменной объекта ADO выберите переменную rs. На вкладке сопоставления переменных выберите cs в переменной, индекс должен быть равен 0.

Теперь в вашем потоке данных щелкните исходное соединение, в выражении установите строку соединения для переменной cs. Тестируйте и получайте удовольствие.

Вся картина:

введите здесь описание изображения

person thotwielder    schedule 12.12.2016