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


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

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

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

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

Компонент Описание
Два режима времени разработки Разработка задачи и компонента начинается с определения свойств в редакторе с последующим переключением в среду разработки для написания кода.
MicrosoftVisual Studio Средства для приложений (VSTA) И для задачи и для компонента используется одна и та же интегрированная среда разработки средств VSTA, а поддерживающий код пишется на языке Microsoft Visual Basic либо Microsoft Visual C#.
Предварительно откомпилированные скрипты Начиная с версии служб Службы SQL Server 2008 Integration Services (SSIS), все скрипты предварительно компилируются. В более ранних версиях предусмотрена возможность указать, должны ли скрипты быть предварительно откомпилированы.

Предварительная компиляция скрипта приводит к получению двоичного кода, который позволяет повысить быстродействие выполнения, но за счет увеличенного размера пакета.
Отладка И в задаче и в компоненте поддерживаются точки останова и пошаговое выполнение кода во время отладки в среде разработки. Дополнительные сведения см. в разделах Кодирование и отладка задачи скрипта и [Кодирование и отладка компонента скрипта](.. /extending-packages-scripting/data-flow-script-component/coding-and-debugging-the-script-component.md.

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

Между задачей «Скрипт» и компонентом скрипта имеются следующие различия.

Компонент Задача «Скрипт» Компонент скрипта
Поток управления или поток данных Настройка задачи «Скрипт» выполняется на вкладке «Поток управления» конструктора и запускается вне потока данных пакета. Настройка компонента скрипта выполняется на странице конструктора «Поток данных», а компонент представляет источник, преобразование или назначение в задаче потока данных.
Назначение Задача «Скрипт» позволяет выполнять почти любую задачу общего назначения. С помощью компонента скрипта можно указать, следует ли создать источник, преобразование или назначение.
Выполнение Задача «Скрипт» запускает пользовательский код в определенной точке рабочего процесса пакета. Если задача не помещена в контейнер цикла или обработчик события, она выполняется только один раз. Компонент скрипта также выполняется однократно, но, как правило, он выполняет свою главную процедуру обработки по одному разу для каждой строки данных в потоке данных.
Редактор Редактор задачи "Скрипт" содержит три страницы: Общие, Скрипт и Выражения. ReadOnlyVariables Только свойства , и ReadWriteVariablesScriptLanguage непосредственно влияют на код, который можно написать. Редактор преобразования "Скрипт" может содержать до четырех страниц: Входные столбцы, Входы и выходы, Скрипт и Диспетчер подключений. Каждая из этих страниц предназначена для настройки метаданных и свойств, определяющих, какие элементы базовых классов автоматически формируются для использования при разработке кода.
Взаимодействие с пакетом В коде, написанном для задачи «Скрипт», для доступа к другим функциям пакета используется свойство Dts. Свойство Dts является элементом класса ScriptMain. В коде компонента скрипта используются свойства типизированного метода доступа для получения доступа к определенным средствам пакета, таким как переменные и диспетчеры соединений.

Метод PreExecute может обращаться только к переменным, доступным только для чтения. Метод PostExecute может обращаться как к переменным, доступным только для чтения, так и к переменным, доступным для чтения и записи.

Дополнительные сведения об этих методах см. в разделе [Кодирование и отладка компонента скрипта](.. /extending-packages-scripting/data-flow-script-component/coding-and-debugging-the-script-component.md.
Использование переменных Задача "Скрипт" использует Variables свойство объекта для Dts доступа к переменным, доступным через свойства и ReadWriteVariables задачиReadOnlyVariables. Например:

[VB]

Dim myVar as String myVar = Dts.Variables("MyStringVariable").Value.ToString



[C#]

string myVar; myVar = Dts.Variables["MyStringVariable"].Value.ToString();
В компоненте скрипта используются свойства типизированного метода доступа, относящиеся к автоматически сформированному базовому классу, который создан на основе свойств компонентов ReadOnlyVariables и ReadWriteVariables. Пример:

[VB]

Dim myVar as String myVar = Me.Variables.MyStringVariable



[C#]

string myVar; myVar = this.Variables.MyStringVariable;
Использование соединений Чтобы получить доступ к диспетчерам соединений, определенным в пакете, в задаче «Скрипт» используется свойство Connections объекта Dts. Например:

[VB]

Dim myFlatFileConnection As String myFlatFileConnection = _ DirectCast(Dts.Connections("Test Flat File Connection").AcquireConnection(Dts.Transaction), _ String)



[C#]

string myFlatFileConnection; myFlatFileConnection = (Dts.Connections["Test Flat File Connection"].AcquireConnection(Dts.Transaction) as String);
В компоненте скрипта используются свойства типизированного метода доступа, относящиеся к автоматически сформированному базовому классу, который создан на основе списка диспетчеров соединений, введенного пользователем на странице «Диспетчеры соединений» редактора. Пример:

[VB]

Dim connMgr As IDTSConnectionManager100 connMgr = Me.Connections.MyADONETConnection



[C#]

IDTSConnectionManager100 connMgr; connMgr = this.Connections.MyADONETConnection;
Инициирование событий В задаче «Скрипт» для инициирования событий используется свойство Events объекта Dts. Например:

[VB]

Dts.Events.FireError(0, "Event Snippet", _ ex.Message & ControlChars.CrLf & ex.StackTrace, _ "", 0)



[C#]

Dts.Events.FireError(0, "Event Snippet", ex.Message + "\r" + ex.StackTrace, "", 0);
Компонент скрипта инициирует ошибки, предупреждения и информационные сообщения с помощью методов интерфейса IDTSComponentMetaData100, возвращаемых свойством ComponentMetaData. Пример:

[VB]

Dim myMetadata as IDTSComponentMetaData100 myMetaData = Me.ComponentMetaData myMetaData.FireError(...)
Ведение журнала Задача "Скрипт" использует Log метод объекта для записи сведений Dts в журнал включенных поставщиков журналов. Например:

[VB]

Dim bt(0) As Byte Dts.Log("Test Log Event", _ 0, _ bt)



[C#]

byte[] bt = new byte[0]; Dts.Log("Test Log Event", 0, bt);
В компоненте скрипта используется метод Log автоформирования базового класса для ведения журналов во включенных регистраторах. Пример:

[VB]

Dim bt(0) As Byte

Me.Log("Test Log Event", _

0, _

bt)



[C#]

byte[] bt = new byte[0]; this.Log("Test Log Event", 0, bt);
Возвращение результатов Задача "Скрипт" использует свойство TaskResult и необязательное ExecutionValueDts свойство объекта для уведомления среды выполнения о своих результатах. Компонент скрипта выполняется в составе задачи потока данных и не сообщает о результатах ни с одним из этих свойств.

См. также:

Расширение пакета с помощью задачи "Скрипт"
Расширение потока данных с помощью компонента скрипта
Использование задачи "Скрипт" в SQL Server служб Integration Services SSIS для подключения к веб-службе