Шаблон SSIS для импорта нескольких таблиц

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

Для каждой из таблиц, если обобщить,

  1. Мне нужно перенести строки из одной таблицы в таблицу другой базы данных
  2. Мне нужно подсчитать количество переданных строк
  3. Необходимо записать время начала и окончания передачи данных для каждой таблицы.
  4. Запишите любые ошибки

Я стараюсь не использовать хранимые процедуры, так как хочу, чтобы людям не приходилось копаться в БД, чтобы получить правила для этого преобразования. В идеале я хотел бы, чтобы это было сделано на уровне SSIS с использованием компонентов, которые поэтому можно увидеть визуально и понять.

Какие-нибудь лучшие практики, которые люди использовали раньше?

В идеале я хотел бы сделать что-то вроде

foreach (таблица в списке таблиц для передачи) transfer (имя таблицы)


person user42587    schedule 20.01.2009    source источник


Ответы (3)


Чтобы создать универсальный обработчик таблиц, вам придется программно создать поток данных. AFAIK SSIS не имеет возможности автоматического самоанализа. Задача сценария позволит вам сделать это, и вы можете получить метаданные таблицы из источника. Однако вам придется программно построить поток данных, что означает возню с API.

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

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

person ConcernedOfTunbridgeWells    schedule 20.01.2009

Что ваша целевая база данных делает с этой информацией? Это просто чтение? Возможно, вам будет лучше всего воспроизвести таблицы.

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

http://blogs.conchango.com/jamiethomson/archive/2005/02/28/SSIS_3A00_-Dynamic-modification-of-SSIS-packages.aspx

Под пунктами он заявляет, что службы SSIS нельзя модифицировать для изменения метаданных во время выполнения. И чтобы упростить обслуживание... вы идете в неправильном направлении.

Я бы сделал все просто и использовал мастер, а затем настроил ведение журнала/уведомления и т. д.

person Sam    schedule 20.01.2009
comment
Целевая таблица — это промежуточная таблица для дальнейшей обработки. Так что да, его просто читают. Я думал добавить таблицу, содержащую все таблицы, которые нужно перемещать, вместе с оператором выбора для источника данных. однако у меня есть ощущение, что источник данных назначения может не работать - person user42587; 21.01.2009
comment
Вы можете изменять свойства соединений, используя переменные и выражения, но это самая простая часть. - person Sam; 21.01.2009

Возможно, вы можете вызвать хранимую процедуру внутри ваших сценариев ssis. Вот пример того, как вы можете использовать sp http://blog.sqlauthority.com/2012/10/31/sql-server-copy-data-from-one-table-to-другая-таблица-sql-за-шестьдесят-секунд-031-видео/

person Nick    schedule 12.02.2014