SSIS — извлечение нескольких баз данных на основе таблицы поиска

Как создать пакет, который извлекает несколько баз данных (и все таблицы в каждой базе данных) с другого сервера на основе таблицы поиска (также найденной на другом сервере), которая содержит столбец, в котором перечислены все базы данных, которые мне нужно извлечь?

Мне нужно использовать таблицу поиска, потому что время от времени в источнике создаются новые базы данных, поэтому я не могу просто создать задание, которое извлекает «статический набор» баз данных в место назначения. Он должен быть немного динамичным...

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

Я новичок в SSIS, поэтому было бы полезно получить "простое" руководство.

Спасибо


person Thomas Christensen    schedule 26.06.2013    source источник
comment
К сожалению, то, о чем вы просите, не так просто.   -  person billinkc    schedule 26.06.2013
comment
Не могли бы вы предоставить схему и некоторые образцы данных этой таблицы, которые описывают базы данных и т. д., которые необходимо автоматически реплицировать? Как насчет атрибута timestamp, не могли бы вы более подробно описать, как он должен учитываться в ETL?   -  person billinkc    schedule 26.06.2013
comment
Но все же можно использовать SSIS? Любые статьи и т. д. Я могу прочитать, чтобы понять концепцию и проблемы?   -  person Thomas Christensen    schedule 26.06.2013
comment
Я постараюсь получить больше информации завтра, так как большая часть информации находится на удаленных серверах...   -  person Thomas Christensen    schedule 26.06.2013
comment
Самая большая трудность, с которой вы столкнетесь, заключается в том, что службы SSIS используют концепцию потока данных для перемещения данных из источника в приемник. Этот поток данных может обеспечить высокую производительность, но за это приходится платить тем, что ваши метаданные должны быть исправлены до запуска пакета. Вы не можете заставить один и тот же поток данных извлекать таблицу поиска из 2 столбцов и таблицу захоронения клиентов из 100 столбцов, просто изменив имя исходной таблицы. Службе SSIS необходимо заранее знать эти метаданные, чтобы она могла правильно выделить память.   -  person billinkc    schedule 26.06.2013
comment
Поэтому вам нужно будет спроектировать множество задач потока данных либо в огромном пакете, либо, что предпочтительнее, разделить на более мелкие, более управляемые пакеты. Это создание пакета можно автоматизировать с помощью таких вещей, как Biml, EzAPI и т. д., но это все равно потребует работы. Затем, как только вы разработаете основы создания пакетов, вам нужно будет побеспокоиться о логике исходной системной даты 2013-06-26 и назначения 2013-05-31. Найдите набор изменений для каждой таблицы, а затем добавьте все новые данные и проверьте наличие изменений/удалений в существующих данных. Если пункт назначения и источник изменились, что правильно?   -  person billinkc    schedule 26.06.2013
comment
Это неплохой вопрос, просто есть много сценариев, которые нужно проработать. SSIS может быть или не быть подходящим инструментом. Черт возьми, что-то вроде репликации, старого доброго резервного копирования и восстановления, среды MS Synch и т. д. может быть лучшим решением, но пока вы не изложите, как это будет работать, сколько времени потребуется для реализации этого в технологии X по сравнению с различные расходы, трудно сказать, иди сюда   -  person billinkc    schedule 26.06.2013
comment
Я вижу, я также пришел к тому же выводу, что метаданные являются самым большим препятствием, потому что они не исправлены, поэтому мне пришлось спросить на форуме ... Я на самом деле также изучил репликацию   -  person Thomas Christensen    schedule 26.06.2013
comment
но я должен прочитать немного больше об этом, прежде чем я выберу это решение. Но есть проблема, что исходный сервер проверен, а это означает, что если я настрою решение для репликации, мне, вероятно, придется сделать много документации или кому-то придется. Но можете ли вы настроить репликацию для репликации экземпляра в экземпляр (чтобы мне не приходилось беспокоиться о новых базах данных) и в то же время инкрементной?   -  person Thomas Christensen    schedule 26.06.2013
comment
Тогда нельзя сделать что-то подобное? 1. Задание планировщика импортирует метаданные с внешнего сервера 2. Метаданные заполняются во временную базу данных 3. Задание планировщика извлекает данные на основе метаданных, найденных во временной базе данных 4. Задание планировщика также извлекает инкрементные данные с использованием метки времени, найденной во всех таблицах   -  person Thomas Christensen    schedule 26.06.2013


Ответы (1)


В качестве грубой идеи вы можете работать с конфигурациями пакетов SSIS и выполнять пакеты из пакетов, а затем использовать задачу передачи объектов SQL Server:

  • Создайте «Основной пакет», который выполняет итерацию по столбцу в вашей таблице поиска.
  • Для каждой записи он должен соответствующим образом ОБНОВИТЬ запись Package Config вашего второго пакета SSIS. Используйте конфигурацию «SQL Server» для этого второго пакета.
  • Затем основной пакет должен выполнить второй пакет — для этого тоже есть задача.
  • Второй пакет просматривает свою конфигурацию, чтобы узнать, с какого сервера получать базы данных, и использует для этого задачу «Передача объектов SQL Server».
  • затем основной пакет переходит к следующей записи из вашей таблицы поиска.

В идеале вы хотели бы иметь свой «второй пакет SSIS» внутри MSDB SQL Server, а не в файловой системе. Его легче выполнить.

person cmenke    schedule 27.06.2013
comment
Ура, я что смогу придумать :) - person Thomas Christensen; 28.06.2013