2016-12-12 2 views
1

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

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

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

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

Благодарим за любые намеки.

SillyWalker

ответ

0

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

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

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

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

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

Вся картина:

enter image description here

Смежные вопросы