Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru  
   
   
   
   
   
   
 
 
  Главная / Заказные курсы / Microsoft SQL Server для профессионалов
 
 

Получить учебные материалы по этому курсу


<-- Назад Читать дальше -->

2.2.7 ActiveX Script Task

ActiveX Script Task в Data Transformation Services (DTS) в SQL Server 2000, выполнение скриптов в ходе работы пакета, циклы в пакете DTS

ActiveX Script Task - одна из самых мощных возможностей DTS. При помощи этого задания вам доступно все, что вы можете сделать в операционной системе при помощи скриптов. Несколько примеров того, что обычно реализуется при помощи скриптов ActiveX в пакетах DTS:

1) проведение пользовательского резервного копирования (например, после загрузки данных перенести файлы источника в архив)

2) настройка рабочей среды - сетевых дисков, принтеров, переменных окружения и т.п.

3) выполнение различных операций в файловой системе - создание/удаление/копирование/перемещение файлов и каталогов, проверка их существования, проверка готовности дисков

4) запуск внешних приложений (в том числе на удаленном компьютере)

5) проверка различных условий - работает ли то или иное приложение, служба и т.п.

6) изменение контекста выполнения пакета (т.е. учетной записи, от имени которой должно быть выполнено то или иное действие)

7) создание (при помощи ADO) временных таблиц - recordset'ов в оперативной памяти во время работы пакета для быстрого выполнения с ними различных операций

8) отправка электронной почты по не MAPI-совместимому почтовому серверу (например, по SMTP)

9) выполнение различных операций со службой каталога Windows и NetWare (через ADSI).

Все эти возможности реализуются при помощи объектных моделей WSH, ADSI, CDO, WMI, ADO и рассматриваются в специальном курсе по скриптингу. Некоторые возможности использования специализированной объектной модели SQL-DMO рассматриваются в соответствующем модуле этого курса.

Две возможности ActiveX Script, специфичные для DTS:

1) в пакетах DTS мало возможностей отладки. Есть возможность в свойствах контейнера Data Transformation Properties включить just-in-time debugging, но это помогает только отлаживать сами ActiveX Script Task или преобразования ActiveX в Transform Data Task. Если же нужно просмотреть значение какой-либо переменной в ходе выполнения, просмотреть, по какой ветви пошло выполнение сложного скрипта, то в нашем распоряжении два варианта:

- сохранить пакет в коде Visual Basic и использовать средства отладки Visual Studio

- использовать в качестве вспомогательного средства функцию MsgBox в ActiveX Script Task, добавляя их в пакеты в отладочных целях.

2) важнейшая возможность ActiveX Script Task - организация циклов в пакете DTS. Другими средствами - практически невозможно. Используются константы времени выполнения:

DTSStepExecStat_Completed

Элемент пакета уже отработал, возврата к нему в ходе выполнения не будет

DTSStepExecStat_Inactive

Элемент пакета неактивен (значение для большинства элементов на момент запуска пакета)

DTSStepExecStat_InProgress

Элемент пакета выполняется в настоящее время

DTSStepExecStat_Waiting

Элемент пакета стоит следующим в очереди на выполнение. После завершения выполнения текущего элемента очередь будет передана ему

Чтобы реализовать цикл, нужно использовать ActiveX Script Task и присвоить элементу пакета статус DTSStepExecStat_Waiting, например:

    oPkg.Steps("DTSStep_DTSExecuteSQLTask_1").ExecutionStatus = DTSStepExecStat_Waiting

Конечно, желательно не забыть про выход из цикла, иначе пакет придется снимать через TaskManager.

Некоторые дополнительные моменты, связанные с ActiveX Script:

1) документация по скриптам - www.microsoft.com/scripting, в MSDN и SQL Server Books Online ее практически нет;

2) в окне свойств ActiveX Script Task есть возможность перейти на вкладку Browser, а через нее вставить в скрипт правильные ссылки на все компоненты пакета

3) если вы создали в ActiveX Script Task какой-либо объект, не забудьте его удалить:

     Set oFSO = CreateObject("Scripting.FileSystemObject")
     Set oFSO = nothing

При запуске скрипта в операционной системе объекты из памяти можно явно не удалять, в DTS делать это обязательно - иначе ActiveX Script Task вообще не запустится;

4) по умолчанию в ActiveX Script можно использовать VBScript и JScript. С точки зрения функциональности различий нет, но если нет опыта работы с JScript, рекомендуется ориентироваться на VBScript - именно на нем большинство примеров.

5) скрипты интерпретируются и компилируются в момент выполнения, поэтому работают относительно медленно. Если нужна максимальная производительность, то лучше использовать Custom Task на C++ (инструкция по созданию - в SDK, регистрация - через меню Task).

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Читать дальше -->

Получить учебные материалы по этому курсу


 

 
© 2004-2008, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru