Сравнение задачи «Скрипт» и компонента скрипта
Задача "Скрипт", доступная в окне "Поток управления" конструктора служб Службы 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 Только свойства , и ReadWriteVariables ScriptLanguage непосредственно влияют на код, который можно написать. |
Редактор преобразования "Скрипт" может содержать до четырех страниц: Входные столбцы, Входы и выходы, Скрипт и Диспетчер подключений. Каждая из этих страниц предназначена для настройки метаданных и свойств, определяющих, какие элементы базовых классов автоматически формируются для использования при разработке кода. |
Взаимодействие с пакетом | В коде, написанном для задачи «Скрипт», для доступа к другим функциям пакета используется свойство 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 для подключения к веб-службе