SQL Server 2000 DTS. Часть 1

ПУБЛИКАЦИИ  

По материалам статьи Marcin Policht: SQL Server 2000 DTS Part 1

Администраторы базы данных, помимо манипуляции постоянно находящимися в базах SQL Server 2000 данными, часто сталкиваются с задачами перемещения информации между разнородными источниками данных. Часто, перемещаемые данные должны быть преобразованы или изменены в процессе перемещения. Раньше (в SQL 6.5 и более ранних версиях), это вызывало существенные проблемы и требовало дополнительных инвестиций в решение таких задач собственными силами. Data Transformation Services (DTS), появившийся в SQL Server 7.0 и улучшенный в SQL Server 2000, решительно изменил эту ситуацию. Целью автора является в нескольких статьях представить Вам концепцию SQL Server 2000 DTS.
Data Transformation Services - это технология, реализующая возможность обмена и трансформации данных между любыми OLE DB источниками. SQL Server DTS реализован, как набор программируемых объектов (формирующих объектную модель DTS), доступных через программирование и создание скриптов, а также через простой в использовании графический интерфейс. Независимо от выбранного способа, с помощью интерфейса объектной модели DTS все действия по перемещению и преобразованию данных оформляются в виде специальных модулей, называемых пакетами. Каждая функция DTS-пакета может быть представлена, как контейнер для четырех типов компонентов:

  • Подключение - представляет источник и получателя данных, которые имеют соответствующего OLE DB провайдера. SQL 2000 DTS имеет встроенные подключения для SQL Server, Access, Excel, Visual FoxPro, текстовых и HTML файлов, а также для баз данных третьих фирм, таких как: Oracle, Paradox и dBase. Другие базы данных могут использоваться при установке своих OLE DB провайдеров.
  • Задачи - представляют отдельные операции, такие как передача данных или их преобразование. Также, задачи используются для уведомления о состоянии исполнения пакета.
  • Порядок исполнения - определяет условия, необходимые для выполнения задач, реализуя дополнительный слой логики исполнения пакета, что позволяет последовательно связывать задачи в пакете.
  • Глобальные переменные - значение или массивы значений (например: rowsets) которые могут быть доступны для всех компонент одного пакета.

Есть разные способы создания DTS-пакетов. Самый простой основан на использовании специальных мастеров (DTS Export Wizard и DTS Import Wizard, которые вызываются в SQL Enterprise Manager из меню Tools -> Wizards -> Data Transformation Services), проводящих Вас по последовательности шагов, ведущих к созданию нового пакета. Обратная сторона этой простоты - ограниченное число параметров конфигурации. То же самое справедливо и при использовании Copy Database Wizard (вызываемого из Tools -> Wizards -> Management). Рекомендуемым инструментом, обеспечивающим равновесие между легкостью использования и большим набором параметров конфигурации, является DTS Designer (запустить его можно в Enterprise Manager, выбрав опцию New Package из контекстного меню Data Transformation Services). Это - наиболее типичный путь создания сложных пакетов, который также можно использовать для доработки сгенерированных ранее мастерами пакетов. И наконец, максимальную гибкость можно достичь используя программный интерфейс DTS COM. Однако, для этого потребуется хорошее умение создавать скрипты или владение языками программирования и объектной моделью DTS, а также, потребует большего о времени и усилий.
Даже притом, что Вы не сможете сохранить пакет пока его не исполните, использование DTS Designer очень удобно. Такой путь не только даст Вам возможность внести изменения или выполнять пакет повторно (если такой процесс преобразования данных необходимо исполнять многократно), но также позволит наметить исполнение пакета по расписанию. Пакеты могут быть сохранены в нескольких местах, каждое из которых имеет свои преимущества и недостатки:

  • Таблица sysdtspackages в базе данных msdb, выбору которой в Enterprise Manager соответствует пункт Local Packages в папке Data Transformation Services. Главное удобство этой опции - поддержка версионности любого локального пакета. Вы можете использовать и редактировать каждую из предварительно сохраненных версий, а не только самую современную из них. Кроме того, при сохранении Вы можете назначить пользователей и пароль для владельца, проверяемые при исполнении и редактировании этого пакета.
  • Microsoft Repository, выбрать который в Enterprise Manager можно из пункта Meta Data Services Packages в папке Data Transformation Services. Эта опция позволяет следить за хронологией пакета, включая номер версии (доступ к предыдущим версиям, также как в Local Packages) и информацию об исполнении пакета, позволяющую отслеживать изменения во время исполнения. В частности, Вы можете собирать информацию об изменениях до уровня столбца и строки. Изменения уровня строки отслеживаются для каждой строки с детализацией исполнения пакета (имя пользователя, имя сервера, дата и время обработки). Изменения уровня столбца отслеживают листинг таблиц и их колонок (для источника и адресата) описанных в пакете, и накапливают информацию, которая обычно используется для целей аудита. Оба параметра по умолчанию отключены. Возможность отслеживания изменений во время исполнения пакета на уровне столбцов появляется после сохранения пакета в репозитории, а для уровня строки необходимо предварительно создать дополнительный столбец в источнике данных, содержащий идентификатор строки. Из-за необходимости отслеживания изменений в течение исполнения, сохраненные в Microsoft Repository пакеты самые медленные, по сравнению с другими типами их хранения. В отличие от Local Packages, невозможно обеспечить индивидуальные параметры безопасности для пакета, резидентно расположенного в репозитории.
  • Структурированные, хранимые файлы (с расширением .DTS) - идеальное решение для копирования пакетов между SQL-серверами. Вы можете сохранить любой существующий пакет (или несколько пакетов) в .DTS файл и использовать традиционные методы передачи файла (ftp, e-mail или операция копирования Windows) для доставки на SQL-сервер адресат. Пакеты в виде файлов могут быть защищены паролем владельца и ограничением пользователей. Также, они могут быть исполнены без SQL Server, при использовании утилиты командной строки DTSRUN.exe (DTSRUNUI.exe - это GUI-апплет, обеспечивающий дружественный интерфейс настройки всех параметров DTSRUN).
  • Файлы модулей Visual Basic (с расширением .BAS) предназначены для разработчиков на Visual Basic, которые могут использовать методы программирования объектной модели DTS для изменения существующих пакетов. Обратите внимание, что такие пакеты не предназначены для импорта в DTS Designer или Microsoft Repository.

Пакеты могут быть исполнены в интерактивном режиме или как задания по расписанию. Диалоговый режим исполнения может быть выбран в окне DTS Designer (например, выбирая опцию EXECUTE в меню Package) или из командной строки, запуском утилиты DTSRUN. Также, Вы можете использовать для этой цели расширенную хранимую процедуру xp_cmdshell, используя следующий синтаксис:


master..xp_cmdshell 'DTSRUN /S "servername" /U "username" /P "password" /N "DTSPackageName"'

Опция Schedule Package доступна в контекстном меню Enterprise Manager в папке Data Transformation Services. В качестве альтернативы, Вы можете наметить запуск команды DTSRUN с соответствующими параметрами, используя планировщик Windows (доступный из меню Programs -> Accessories -> System Tools), или используя утилиту DTSRUNUI. При планировании пакетов в Enterprise Manager или DTSRUNUI, удостоверитесь, что служба SQL Server AGENT правильно настроена и запущена. Наконец, Вы можете вызывать пакет из другого пакета с помощью команды EXECUTE Package, которую мы рассмотрим в одной из следующих статей (в этом случае, порядок исполнения пакета будет зависеть от режима исполнения его родителя).
При запуске пакетов по расписанию, рекомендуется включить журналирование (закладка Logging в свойствах пакета). Это очень упрощает разрешение проблем в случае отказов в работе (так как сообщения об ошибках в хронологии работы довольно упрощённые). Журналирование предоставляет информацию о прогрессе исполнения и сообщениях об ошибках на каждом шаге. Эта информация может записываться в текстовый файл или таблицы базы данных msdb (sysdtspackagelog и sysdtssteplog). Вы должны будете не забывать периодически очищать их (файлы можно удалять, а таблицы усекать), так как новая информация журналирования всегда будет добавляться в конец существующего журнала.
Выбор пути запуска пакета также определяет его контекст безопасности. Во время диалогового исполнения, пакет использует контекст той учётной записи, под которой пользователь вошёл в систему (который запустил пакет). Единственное исключение - это утилита DTSRUN, вызванная из расширенной хранимой процедуры xp_cmdshell (как было показано выше), когда результат зависит от тех параметров, которые указаны на закладке Job System в окне свойствах SQL Server Agent (папка Management в Enterprise Manager). Используя эту закладку, Вы можете ограничить возможность исполнения xp_cmdshell пользователям с правами System Administrator, после чего xp_cmdshell исполняется в контексте учетной записи службы SQL Server Agent или в контексте специальной учетной записи Proxy. С другой стороны, исполняемые по расписанию пакеты всегда работают под учетной записью службы SQL Server Agent, если не используется утилита DTSRUN в планировщике Windows, где можно назначить произвольную информацию об учетной записи запускающего задание пользователя.
Обратите также внимание на то, что задания по расписанию в терминах SQL Server Agent будут исполнены на SQL Server, в то время как диалоговое исполнение будет происходить на той системе, на которой они были запущены. Это имеет существенные значения, если пакет включает сценарии ActiveX, которые отнимают очень много ресурсов. Чтобы воспользоваться преимуществом высокопроизводительной работы SQL Server - систем, используйте запуск по расписанию или подключение к серверу через Terminal Services. В любом случае, Вы должны стараться избегать использования в пакетах ActiveX сценариев, поскольку они отрицательно влияют на быстродействие исполнения пакета.
В нашей первой статье о Data Transformation Services мы сделали краткий обзор основных концепций этой технологии. Это будет служить отправной точкой изучению работы DTS-мастеров, которые будут представлены в следующих статьях.

[В начало]    [К следующей статье цикла]


Перевод: Александра Гладченко  2004г.

ПУБЛИКАЦИИ

Скачать электронную карту Ангарска бесплатно
Сайт управляется системой uCoz