Я использую SSIS для синхронизации данных между двумя базами данных. Я использовал SSIS и DTS в прошлом, но я обычно пишу приложение для вещей такого рода (я программист, и мне это становится проще).
В моем пакете я использую задачу SQL, которая возвращает около 15 000 строк. Я подключил это к контейнеру Foreach, и в этом я назначаю значения столбца набора результатов переменным, а затем сопоставляю эти переменные с параметрами, которые передаются в другую задачу SQL.
У меня проблема с отладкой, а не просто с более сложной отладкой, такой как точки останова и оценка значений во время выполнения. Я просто имею в виду, что если я запускаю это с отладкой, а не без, это займет несколько часов.
В итоге я переписал процесс в Delphi, и вот что я придумал:
Полный поток данных:
Это извлекает 15 000 строк, обновляет таблицу назначения для каждой строки, затем вытягивает 11 000 строк и обновляет таблицу назначения для каждой строки.
Debugging:
Delphi App: 139 с
SSIS: 4 часа 46 минут
Не отладка:
Приложение Delphi: 132 с
SSIS: 384 с
Обновление данных:
Это тянет 3000 строк, но не требуется никаких обновлений или внесения в таблицу назначения. Затем он извлекает 11 000 строк, но, опять же, не требуется никаких обновлений или внесения в таблицу назначения.
Debugging:
Delphi App: 42 с
SSIS: 1 час 10 минут
Не отладка:
Delphi App: 34 с
SSIS: 205 с
Странно то, что у меня такое ощущение, что большую часть времени, затрачиваемого на отладку, - это просто обновление элементов пользовательского интерфейса в Visual Studio. Если я просматриваю вкладку прогресса, то узел добавляется в дерево для каждой итерации (всего тысяч), и это становится все медленнее и медленнее по мере продвижения процесса. Попытка остановить отладку обычно не работает, поскольку Visual Studio, похоже, зацикливается на обновлении пользовательского интерфейса. Если я проверяю профилировщик для SQL Server, никакая фактическая работа не выполняется. Я не уверен, что машина имеет значение, но она должна быть более чем достойной (четырехъядерный процессор, 4 ГБ оперативной памяти, видеокарта 512 МБ).
Это нормальное поведение? Как я уже говорил, я по профессии программист, поэтому у меня нет проблем с написанием приложения для такого рода вещей (на самом деле, для написания кода приложения требуется гораздо меньше времени, чем для его «отрисовки» в SSIS, но я Я полагаю, что запас будет уменьшаться с увеличением объема работы, выполняемой в SSIS), но я пытаюсь выяснить, где что-то вроде SSIS и DTS могло бы вписаться в мой набор инструментов. Пока что ничто по-настоящему меня не впечатлило. Может быть, я неправильно использую или злоупотребляю SSIS?
Любая помощь будет принята с благодарностью, заранее спасибо!