Сравнение задачи «Сценарий» и компонента сценария
Задача «Сценарий», доступная в окне «Поток управления» конструктора служб Integration Services, и компонент сценария, доступный в окне «Поток данных», предназначены в пакете служб Integration Services для разных целей. Задача представляет собой универсальное средство потока управления, а компонент служит источником, преобразованием или назначением в потоке данных. Несмотря на то что они предназначены для разных целей, между задачей «Сценарий» и компонентом сценария имеются некоторые подобия в используемых средствах разработки кода и объектах в пакете, которые доступны разработчику с их помощью. Понимание их подобия и различия может помочь использовать задачи и компоненты более эффективно.
Подобия между задачей «Сценарий» и компонентом сценария
Задача «Сценарий» и компонент сценария имеют следующие общие характеристики.
Функция |
Описание |
---|---|
Два режима времени разработки |
Разработка задачи и компонента начинается с определения свойств в редакторе с последующим переключением в среду разработки для написания кода. |
Средства Microsoft Visual Studio для приложений (VSTA) |
И для задачи, и для компонента используется одна и та же интегрированная среда разработки средств VSTA, а поддерживающий код пишется либо на языке Microsoft Visual Basic 2008, либо на языке Microsoft Visual 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 . |
Компонент сценария выполняется в составе задачи потока данных и не сообщает о результатах ни с одним из этих свойств. |
Отладка |
В задаче «Сценарий» поддерживаются точки останова и пошаговое выполнение кода во время отладки в среде проектирования.
Примечание
При отладке пакета, содержащего несколько задач «Сценарий», отладчик обрабатывает точки останова только в одной задаче «Сценарий» и не учитывает точки останова в других задачах. Если задача «Сценарий» является частью контейнера «цикл по каждому элементу» или «цикл по элементам», отладчик пропускает точки останова в задаче «Сценарий» после первого прохода цикла.
|
В компоненте сценария отладка не поддерживается. Дополнительные сведения см. в подразделе «Отладка компонента сценария» в разделе Кодирование и отладка компонента сценария. |
|
См. также