Data Transformation Services
Data Transformation Services (DTS; с англ. — «Службы преобразования данных») — это набор программных компонентов и утилит, входивших в состав ранних версий Microsoft SQL Server (начиная с версии 7.0), предназначенный для выполнения операций извлечения, преобразования и загрузки данных (ETL — Extract, Transform, Load). DTS позволял автоматизировать процессы перемещения данных между различными источниками, их очистку, агрегирование и загрузку в целевую базу данных, а также выполнять пересылку объектов баз данных между экземплярами SQL Server.
История и развитие
Изначально DTS был представлен в 1998 году (Microsoft SQL Server 7.0) как технология, заменившая более примитивные средства передачи данных в SQL Server 6.5, такие как Bulk Copy Program (BCP). Основной задачей DTS было упростить интеграцию данных из гетерогенных источников (например, текстовых файлов, Excel, Access, Oracle, DB2 и других баз данных) в среду SQL Server.
В SQL Server 2000 DTS был значительно расширен: появились новые типы задач (Task) и преобразований (Transformations), улучшен планировщик, добавлена поддержка ActiveX-скриптов для сложной бизнес-логики, а также возможность выполнения DTS-пакетов из внешних приложений через COM-интерфейс.
С выпуском SQL Server 2005 корпорация Microsoft заменила DTS на новую, более мощную и гибкую платформу — SQL Server Integration Services (SSIS). SSIS стал частью SQL Server Business Intelligence (BI) и был построен на принципиально новой архитектуре, использующей .NET Framework, что позволило значительно повысить производительность, масштабируемость и возможности расширения. DTS оставался в SQL Server 2005 как устаревший компонент (DTS 2000 runtime) для обратной совместимости, но окончательно был удалён, начиная с SQL Server 2008.
Несмотря на то, что DTS был заменён SSIS, многие компании до сих пор поддерживают унаследованные DTS-пакеты, работающие на старых версиях SQL Server.
Архитектура и основные компоненты
Архитектура DTS представляла собой гибридную систему, где центральным элементом был пакет DTS (DTS Package) — единица развёртывания и выполнения ETL-процессов. Пакет состоял из набора задач (Tasks), соединённых между собой связями (Precedence Constraints), которые управляли потоком выполнения.
Пакет DTS (DTS Package)
- Исполняемые задачи (Tasks): отдельные действия, такие как копирование данных (Data Pump Task), выполнение SQL-скриптов (Execute SQL Task), отправка электронной почты (Send Mail Task), перенос баз данных (Transfer Databases Task) и другие.
- Преобразования (Transformations): логика, применяемая к данным во время их перемещения. Включала стандартные преобразования (например, изменение типа данных, объединение столбцов), а также пользовательские ActiveX-скрипты.
- Связи (Precedence Constraints): определяли порядок выполнения задач (последовательный, параллельный или по условию — в зависимости от успеха или неудачи предыдущей задачи).
- Подключения (Connections): объекты, определяющие строки подключения к источникам и приёмникам данных (SQL Server, плоские файлы, OLE DB, ODBC и др.).
- Глобальные переменные: позволяли передавать значения между задачами внутри пакета.
Компоненты DTS
- DTS Designer: визуальный графический редактор для создания и редактирования пакетов в среде SQL Server Enterprise Manager или Management Studio (для SQL Server 2000).
- DTS Run: утилита командной строки (dtsrun.exe) для выполнения пакетов из командной строки или скриптов.
- DTS Wizard: пошаговый мастер, упрощающий создание типовых пакетов (например, импорт/экспорт данных из Excel в SQL Server).
- DTS Object Model: COM-интерфейс для программного управления пакетами (создание, выполнение, изменение) из языков, поддерживающих COM (VBScript, Visual Basic 6.0, JScript).
Классификация задач DTS
Задачи DTS делились на три основные категории:
- Задачи по работе с данными:
- Data Pump Task — основная задача для перемещения данных с возможностью преобразования на лету.
- Execute SQL Task — выполнение произвольных SQL-запросов (INSERT, UPDATE, хранимые процедуры).
- Bulk Insert Task — высокопроизводительная загрузка данных из текстовых файлов в SQL Server с помощью утилиты BCP.
- Transform Data Task — специализированная задача для преобразования данных из источника в назначение с возможностью применения пользовательских скриптов.
- Задачи по администрированию и обслуживанию:
- Transfer Objects Task — копирование объектов базы данных (таблицы, индексы, хранимые процедуры) между экземплярами SQL Server.
- Execute Process Task — запуск внешних исполняемых файлов.
- Send Mail Task — отправка электронной почты через MAPI или SMTP.
- Backup/Restore Database Task — резервное копирование или восстановление базы данных.
- Задачи для управления потоком:
- ActiveX Script Task — выполнение произвольного скрипта на VBScript или JScript для реализации сложной логики.
- Dynamic Properties Task — изменение свойств пакета или задач во время выполнения (например, переопределение строки подключения).
- Go To Task — безусловный переход к другой задаче в пакете.
Применение DTS
Основное применение DTS — организация ETL-процессов для:
- Загрузки данных из операционных систем (OLTP-базы) в аналитические хранилища (OLAP-кубы или витрины данных).
- Регулярного обновления справочников (например, загрузка курсов валют из внешних CSV-файлов).
- Миграции данных между различными версиями SQL Server или между SQL Server и другими СУБД.
- Создания автоматизированных процедур архивирования или очистки данных.
- Быстрой передачи данных между серверами при слиянии баз данных.
В отличие от более позднего SSIS, DTS не поддерживал полноценные пакеты с единой средой отладки, детализированное логирование ошибок или параллельное выполнение нескольких потоков данных в одном пакете. Однако для массовых типовых задач DTS был прост в освоении и требовал минимального кодирования.
Критика DTS
Несмотря на распространённость, DTS имел ряд существенных недостатков:
- Ограниченная масштабируемость: пакеты DTS не могли эффективно использовать многопоточность и многоядерные процессоры.
- Слабая система обработки ошибок: при сбое пакет часто не предоставлял достаточной информации о причине ошибки.
- Зависимость от COM: необходимость работы в 32-битной среде, несовместимость с 64-битной архитектурой напрямую.
- Отсутствие встроенных преобразований: многие операции (например, поиск по подстановке, работа с XML) требовали написания пользовательских скриптов, что снижало производительность.
- Сложность отладки: отсутствовала пошаговая отладка пакетов, ошибки можно было выявить только после выполнения всего пакета.
Наследие и влияние
Хотя DTS устарел технологически, он заложил основу для современных инструментов интеграции данных в экосистеме Microsoft. Многие концепции ETL, впервые реализованные в DTS (задачи, преобразования, конвейеры, пакеты), были перенесены в SSIS и затем развиты. DTS также способствовал популяризации ETL-процессов среди администраторов баз данных, не имеющих навыков программирования, благодаря простому графическому интерфейсу.
В настоящее время (на 2025 год) DTS не поддерживается ни в одной актуальной версии SQL Server (от 2008 и выше). Для работы с унаследованными пакетами DTS требуется использование SQL Server 2000 или 2005, либо сторонних утилит для конвертации пакетов DTS в формат SSIS (например, DTS-to-SSIS Converter). Корпорация Microsoft рекомендует мигрировать все устаревшие DTS-пакеты на SSIS как наиболее современную и поддерживаемую платформу.
Источники
- Microsoft SQL Server Books Online (SQL Server 2000, раздел "DTS Architecture")
- Microsoft SQL Server 2005 Integration Services (SSIS) — Documentation
- "Professional SQL Server 2000 DTS" — Mark Chaffin, Brian Knight, G. David Lo
- "SQL Server 2008 Integration Services: Problem, Design, Solution" — Erik Veerman, Brian Knight
- TechNet: Error Handling in DTS (Microsoft Corporation)
- MSDN: "Upgrading DTS Packages to SSIS" — Microsoft Corporation
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →