Сравнение задачи «Скрипт» и компонента скрипта
Задача «Скрипт», доступная в окне «Поток управления» конструктора служб Службы Integration Services, и компонент скрипта, доступный в окне «Поток данных», предназначены в пакете служб Службы Integration Services для разных целей. Задача представляет собой универсальное средство потока управления, а компонент служит источником, преобразованием или назначением в потоке данных. Несмотря на то что они предназначены для разных целей, между задачей «Скрипт» и компонентом скрипта имеются некоторые подобия в используемых средствах разработки кода и объектах в пакете, которые доступны разработчику с их помощью. Понимание их подобия и различия может помочь использовать задачи и компоненты более эффективно.
Подобия между задачей «Скрипт» и компонентом скрипта
Задача «Скрипт» и компонент скрипта имеют следующие общие характеристики.
Компонент |
Описание |
---|---|
Два режима времени разработки |
Разработка задачи и компонента начинается с определения свойств в редакторе с последующим переключением в среду разработки для написания кода. |
Средства Microsoft Visual Studio для приложений (VSTA) |
И для задачи и для компонента используется одна и та же интегрированная среда разработки средств VSTA, а поддерживающий код пишется на языке Microsoft Visual Basic либо Microsoft Visual C#. |
Предварительно откомпилированные скрипты |
Начиная с версии служб Службы SQL Server 2008 Integration Services (SSIS), все скрипты предварительно компилируются. В более ранних версиях предусмотрена возможность указать, должны ли скрипты быть предварительно откомпилированы. Предварительная компиляция скрипта приводит к получению двоичного кода, который позволяет повысить быстродействие выполнения, но за счет увеличенного размера пакета. |
Отладка |
И в задаче и в компоненте поддерживаются точки останова и пошаговое выполнение кода во время отладки в среде разработки. Дополнительные сведения см. в разделах Написание кода и отладка задачи «Скрипт» и Кодирование и отладка компонента скрипта. |
Различия между задачей «Скрипт» и компонентом скрипта
Между задачей «Скрипт» и компонентом скрипта имеются следующие различия.
Компонент |
Задача «Скрипт» |
Компонент скрипта |
---|---|---|
Поток управления или поток данных |
Настройка задачи «Скрипт» выполняется на вкладке «Поток управления» конструктора и запускается вне потока данных пакета. |
Настройка компонента скрипта выполняется на странице конструктора «Поток данных», а компонент представляет источник, преобразование или назначение в задаче потока данных. |
Назначение |
Задача «Скрипт» позволяет выполнять почти любую задачу общего назначения. |
С помощью компонента скрипта можно указать, следует ли создать источник, преобразование или назначение. |
Выполнение |
Задача «Скрипт» запускает пользовательский код в определенной точке рабочего процесса пакета. Если задача не помещена в контейнер цикла или обработчик события, она выполняется только один раз. |
Компонент скрипта также выполняется однократно, но, как правило, он выполняет свою главную процедуру обработки по одному разу для каждой строки данных в потоке данных. |
Редактор |
Окно Редактор задачи «Скрипт» содержит три страницы: Общие, Скрипт и Выражения. К разрабатываемому коду имеют непосредственное отношение только свойства ReadOnlyVariables и ReadWriteVariables, а также ScriptLanguage. |
Окно Редактор преобразования «Скрипт» может содержать до четырех страниц: Входные столбцы, Входы и выходы, Скрипт и Диспетчеры соединений. Каждая из этих страниц предназначена для настройки метаданных и свойств, определяющих, какие элементы базовых классов автоматически формируются для использования при разработке кода. |
Взаимодействие с пакетом |
В коде, написанном для задачи «Скрипт», для доступа к другим функциям пакета используется свойство Dts. Свойство Dts является элементом класса ScriptMain. |
В коде компонента скрипта используются свойства типизированного метода доступа для получения доступа к определенным средствам пакета, таким как переменные и диспетчеры соединений. Метод PreExecute может обращаться только к переменным, доступным только для чтения. Метод PostExecute может обращаться как к переменным, доступным только для чтения, так и к переменным, доступным для чтения и записи. Дополнительные сведения об этих методах см. в разделе Кодирование и отладка компонента скрипта. |
Использование переменных |
Задача «Скрипт» использует свойство Variables объекта Dts, чтобы получить доступ к переменным, доступным через свойства задачи ReadOnlyVariables и ReadWriteVariables. Например. |
В компоненте скрипта используются свойства типизированного метода доступа, относящиеся к автоматически сформированному базовому классу, который создан на основе свойств компонентов ReadOnlyVariables и ReadWriteVariables. Например. |
Использование соединений |
Чтобы получить доступ к диспетчерам соединений, определенным в пакете, в задаче «Скрипт» используется свойство Connections объекта Dts. Например, |
В компоненте скрипта используются свойства типизированного метода доступа, относящиеся к автоматически сформированному базовому классу, который создан на основе списка диспетчеров соединений, введенного пользователем на странице «Диспетчеры соединений» редактора. Например, |
Инициирование событий |
В задаче «Скрипт» для инициирования событий используется свойство Events объекта Dts. Например, |
Компонент скрипта инициирует ошибки, предупреждения и информационные сообщения с помощью методов интерфейса IDTSComponentMetaData100, возвращаемых свойством ComponentMetaData. Например, |
Ведение журнала |
Для ведения журналов во включенных регистраторах в задаче «Скрипт» используется метод Log объекта Dts . Например: |
В компоненте скрипта используется метод Log автоформирования базового класса для ведения журналов во включенных регистраторах. Например: [Visual Basic] Dim bt(0) As Byte Me.Log("Test Log Event", _ 0, _ bt) |
Возвращение результатов |
Чтобы передать в среду выполнения извещение о результате работы, в задаче «Скрипт» используются как свойство TaskResult, так и необязательное свойство ExecutionValue объекта Dts . |
Компонент скрипта выполняется в составе задачи потока данных и не сообщает о результатах ни с одним из этих свойств. |
|
См. также
Справочник
Расширение пакета с помощью задачи «Скрипт»
Основные понятия
Расширение потока данных с помощью компонента скрипта
Другие ресурсы
Использование веб-служб в SSIS с помощью скриптов (курируемый ответ)