Пакеты: создание и хранение

Напомним, что пакет служит контейнером для логического и административного объединения задач преобразования, включая коллекции соединений, задач, шагов и глобальных переменных, т.е. переменных, которые видны изо всех составляющих пакета. Пакеты могут создаваться из графического интерфейса SQL Enterprise Manager и программным путем. Графически пакет создается через DTS Designer, либо неявно через DTS Import/Export Wizard. Последний решает простейшие задачи переноса данных (и объектов в случае SQL Server 7.0 - см. Назначение и Возможности) и может быть запущен как из контекстного меню соответствующего объекта SQL Server, так и из командной строки (dtswiz.exe). DTS Designer, как мы уже знаем, решает более сложные задачи с преобразованием данных в процессе переноса, ветвлением последовательности выполнения и т.д. Он вызывается из раздела Data Transformation Services snap-in'a SQL Server в Microsoft Management Console (MMC). Все действия над пакетом и его компонентами, которые доступны из графического интерфейса: создание, изменение тех или иных параметров, выполнение и пр., также могут быть выполнены из приложения. Microsoft DTS Package Object Library устанавливается вместе с SQL Server 7.0 (…\binn\ Resources\1033\dtspkg.rll).

Возможны три способа хранения пакета. Локальные пакеты хранятся на SQL Server в msdb..sysdtspackages. Эта системная таблица содержит всю информацию о пакете (название, номер версии, владелец, ...), включая сам пакет в бинарном виде (поле PackageData типа Image). Пакеты могут храниться в MS Repository. По умолчанию, репозиторий располагается также на SQL Server (msdb..RTbl*), хотя это необязательно. Репозиторий позволяет сохранить метаданные пакета и информацию о его запусках. Проиллюстрируем сказанное на примере. Создадим простейший пакет, "тупо" переносящий данные из одной таблицы в другую, можно в пределах одной базы данных. В свойствах пакета (закладка Advanced) отметим опции Show lineage variables as source columns и Write lineage to repository. Зайдем в преобразование. Мы увидим, что в исходной таблице появились поля DTSLineage_Full и DTSLineage_Short. Например, по полю Lineage легко определить сам пакет, кто его создал, кто совершил данное преобразование, когда и т.д. Первое (типа uniqueidentifier) есть GUID версии пакета, второе (типа integer) - ее контрольная сумма. Создадим одно из или оба соответствующих поля в таблице назначения и установим перенос "один в один" между источником и назначением. Выполним пакет. Теперь посмотрите данные в таблице назначения. Представьте себе, что Вы потрясены тем, как мастерски были перенесены данные. Вы хотите найти того, кто это сделал, и должным образом отметить, однако никто почему-то не сознается. Чтобы награда все-таки нашла своего героя, поступаем следующим образом. Берем значение lineage из таблицы назначения, копируем его в соответствующее поле ввода (Lineage Long или Lineage Short) формы Repository Lineage Lookup (Data Transformation Services -> Metadata -> закладка Lineage) и кликаем на ссылку Find Lineage. Мы немедленно получаем инфомацию о пакете, его версии, кем он был создан, кем модифицировался, когда был выполнен и т.д. (см. рис.7).

Рис. 7

Щелчок по ссылке Design откроет данный пакет в DTS Designer. Репозиторное хранение позволяет хранить различные версии одного пакета. Если мы имеем созданный пакет, вносим в него какие-либо изменения, а затем сохраняем в пакет с тем же именем, то он не перепишет старую версию, а наряду с ней будет сохранен как новая версия того же пакета. Закладка Package позволяет просматривать пакеты в репозитории вместе с их версиями и информацией о том, кто и когда запускал какую версию пакета на выполнение (см. рис.8).

Рис. 8

Метаданные об объектах базы данных, на которые ссылается репозиторный пакет DTS, также хранятся в репозитории. К ним относятся первичные и внешние ключи, поля (названия, типы, длины, точность, ...), а также индексы. Утилита под названием OLE DB Scanner for Microsoft Repository (\Program Files\Common Files\Microsoft Shared\Repostry\dbscan.dll) переносит информацию о схеме в DBM (Database Information Model) репозитория.

Рис. 9

Последний, третий, вариант представляет собой хранение пакета в виде файла СОМ-структуры. По умолчанию ему дается расширение .dts. Это наиболее удобный способ хранения пакетов при их копировании, пересылке по e-mail и т.п. В одном файле могут храниться пакеты с разными именами и разные версии пакета с одним именем. Версию можно загрузить в DTS Designer из контекстного меню раздела Data Transformation Services: Аll Tasks -> Open Package -> выбрать файл на диске -> выбрать пакет из числа хранящихся на диске и, при необходимости, его версию (см.рис.9).

Назад | Содержание | Вперед