|
По материалам статьи Marcin Policht: SQL Server 2000 DTS Part 6 - DTS Designer Tasks and Package Workflow Как было обещано в предыдущей
статье, мы продолжаем обсуждение разных способов
использования глобальных переменных в задачах DTS Designer. В
частности, мы изучим их роль в обмене данными между пакетами и
особенности использования Execute Package task. Заодно мы
узнаем, для чего можно использовать DTS Package
Workflow. Description: Delete DTS Log Win32 process: %ComSpec% Parameters: /C del C:\Logs\dts.log Return code: 0 Timeout: 2 Нотация %ComSpec% определяет переменную среды, указывающую на местоположение CMD.EXE. Мы будем использовать одну из внутренних команд операционной системы - DEL, вызываемую как один из параметров процесса Win32. В нашем случае, местом расположения файла регистрации будет: C:\Logs\dts.log, но, вы может изменить это место по своему усмотрению. Код возврата = 0 будет указывать на успешное завершение. Время ожидания (Timeout) = 2 определяет время, по истечении которого процесс будет принудительно завершён. Чтобы проверить работу этого пакета, сохраните его под именем "Delete DTS Log" и создайте текстовый файл C:\Logs\dts.log (его содержание является несущественным). Теперь нужно выполнить пакет (нажав зеленый треугольник в инструментальной панели или выбрав опцию Execute в меню Package) или выполнить задачу (щёлкнув правой кнопкой мыши на ней и выбрав в раскрывшемся контекстном меню Execute). Вы увидите промелькнувшее окно Command Prompt и подтверждение, что пакет или шаг (в зависимости от того, как Вы его запускали) был успешно выполнен. Если Вы проверите содержание папки C:\Logs, то увидите, что файла dts.log там больше нет. Поскольку мы хотим продемонстрировать использование для связи между пакетами глобальных переменных, мы должны устранить жесткую зависимость от имени процесса Win32 и значений его параметров. Достигается это за счёт использования задачу Dynamic Properties Task, которую мы рассматривали в предыдущей статье. В меню Task добавьте задачу Dynamic Properties Task. В её окне Package Properties, щёлкните по кнопке Add, после чего разверните на левой панели открывшегося окна узел Tasks, и выберете запись DTSTask_DTSCreateProcessTask_1. Для этой записи выберете элемент ProcessCommandLine, так что бы он стал подсвеченным. После этого нажмите на кнопке Set, и Вы увидите диалоговое окно Add/Edit Assignment. В списке Source, установите указатель вниз на элемент Global Variable и нажмите кнопку Create Global Variables. Добавьте следующую глобальную переменную: Name: gVarCmdLine Type: String Value: %comspec% /C del C:\Logs\dts.log Нажмите OK, и Вы вернетесь в диалоговое окно Add/Edit
Assignment. В нём, в списке Variable раздела Source, выберите
недавно созданную переменную gVarCmdLine. И на последок, в
описании задачи замените название "Dynamic Properties
Task:undefined" на более понятное: "Set Command Line". После
того, как Вы закроете диалоговое окно, Вы должны увидеть в
окне DTS Package две задачи: "Delete DTS Log" и "Set Command
Line". Также, мы должны гарантировать, что задача Dynamic
Properties Task будет выполнятся первой, так как наша новая
глобальная переменная должна быть установлена до выполнения
процесса Win32. Это можно сделать путём установки порядка
исполнения задач, в определении логики пакета - DTS Package
Workflow.
В окне DTS Package порядок исполнения задаётся указанием
мышью первого, а затем второго по порядку исполнения задания и
затем нужно выбрать соответствующий тип порядка в Workflow. В
нашем случае, сначала выделите значок Set Command Line, затем
Delete DTS Log и выберите значок On Success в меню Workflow.
Опять создайте фиктивный журнал (C:\Logs\dts.log) и, как
только Вы сохраните и выполните пакет, Вы должны увидеть тот
же результат, как и в предыдущей проверке исполнения пакета
(dts.log будет удалён). Description: Execute Package Example Location: SQL Server Package name: Delete DTS Log Указываемый в этом окне режим и параметры аутентификации
будут зависеть от настройки вашего SQL Server. Имя пакета (и
версия) может быть введено вручную (не рекомендуется) или
выбрано от списка существующих пакетов, если щёлкнуть по
кнопке - (...). Если на SQL сервере пакет "Delete DTS Log"
один - единственный (и есть он только одной версии), его имя
появится в текстовом поле имени пакета. Иначе, Вам нужно будет
выбрать его вместе с версией (обозначенной датой и временем
создания). Как правило, достаточно выбрать имя пакета (вместо
указателей на версии с временными метками), и это будет
указывать на то, что всегда должна использоваться последняя
версия пакета. В первом случае, у Вас будет использоваться
ссылка на GUID пакета, а во втором на GUID версии (они обе
отображаются на закладке General диалогового окна Properties
пакета). Использование GUID версии означает, что Вы должны
будете каждый раз корректировать опцию "Package NAME", чтобы
указать ссылку на последнюю версию, если Вы вносите изменения
в пакет (предполагается, что Вы хотите всё время иметь
наиболее современную версию). Если Вы хотите удалить ссылку на
GUID версии или целого пакета (чтобы избежать проблемы в
случае, если дочерний пакет будет заменён другим с таким же
именем), Вы можете удалить PackageID с помощью Disconnected
Edit (доступный в меню Package окна DTS Package). Открыв окно
Edit All Package Properties, Вы можете просмотреть свойства
Execute Package Task и удалить значение соответствующего
PackageID. |
Перевод: Александра Гладченко 2004г. |