Поделиться через


Сравнение задачи «Сценарий» и компонента сценария

Задача «Сценарий», доступная в окне «Поток управления» конструктора служб Integration Services, и компонент сценария, доступный в окне «Поток данных», предназначены в пакете служб Integration Services для разных целей. Задача представляет собой универсальное средство потока управления, а компонент служит источником, преобразованием или назначением в потоке данных. Несмотря на то что они предназначены для разных целей, между задачей «Сценарий» и компонентом сценария имеются некоторые подобия в используемых средствах разработки кода и объектах в пакете, которые доступны разработчику с их помощью. Понимание их подобия и различия может помочь использовать задачи и компоненты более эффективно.

Подобия между задачей «Сценарий» и компонентом сценария

Задача «Сценарий» и компонент сценария имеют следующие общие характеристики.

Функция

Описание

Два режима времени разработки

Разработка задачи и компонента начинается с определения свойств в редакторе с последующим переключением в среду разработки для написания кода.

Средства MicrosoftVisual Studio для приложений (VSTA)

И для задачи, и для компонента используется одна и та же интегрированная среда разработки средств VSTA, а поддерживающий код пишется либо на языке MicrosoftVisual Basic 2008, либо на языке MicrosoftVisual C# 2008.

Предварительно откомпилированные сценарии

В службах 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 .

Компонент сценария выполняется в составе задачи потока данных и не сообщает о результатах ни с одним из этих свойств.

Отладка

В задаче «Сценарий» поддерживаются точки останова и пошаговое выполнение кода во время отладки в среде проектирования.

ПримечаниеПримечание
При отладке пакета, содержащего несколько задач «Сценарий», отладчик обрабатывает точки останова только в одной задаче «Сценарий» и не учитывает точки останова в других задачах. Если задача «Сценарий» является частью контейнера «цикл по каждому элементу» или «цикл по элементам», отладчик пропускает точки останова в задаче «Сценарий» после первого прохода цикла.

В компоненте сценария отладка не поддерживается. Дополнительные сведения см. в подразделе «Отладка компонента сценария» в разделе Кодирование и отладка компонента сценария.

Значок служб Integration Services (маленький)Будьте в курсе новых возможностей cлужб Integration Services

Чтобы загружать новейшую документацию, статьи, образцы и видеоматериалы от корпорации Майкрософт, а также лучшие решения от участников сообщества, посетите страницу Integration Services на сайтах MSDN или TechNet:

Чтобы получать автоматические уведомления об этих обновлениях, подпишитесь на RSS-каналы, предлагаемые на этой странице.