Настройка компонента сценария в редакторе компонента сценария

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

Выбор типа создаваемого компонента

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

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

Основные сведения о двух режимах времени разработки

В конструкторе служб SSIS компонент сценария имеет два режима: режим конструктора метаданных и режим конструктора кода.

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

После переключения в режим конструктора кода путем нажатия кнопки Изменить сценарий компонент сценария блокирует внесение дополнительных изменений в метаданные, а затем автоматически формирует код базовых классов на основе метаданных входов и выходов. После завершения автоматического формирования кода появляется возможность вводить пользовательский код. В разрабатываемом коде используются автоматически сформированные базовые классы для обработки входных строк, доступа к буферам и столбцам в буферах, а также для получения диспетчеров соединений и переменных из пакета; при этом все объекты рассматриваются как строго типизированные.

После ввода пользовательского кода в режиме конструктора кода можно переключиться обратно в режим конструктора метаданных. Это не приводит к удалению введенного кода, но последующие изменения в метаданных вызывают повторное формирование базового класса. В дальнейшем проверка компонента может окончиться неудачей из-за того, что объекты, на которые имеются ссылки в пользовательском коде, больше не существуют или, возможно, были изменены. В этом случае необходимо исправить код вручную, чтобы можно было успешно скомпилировать его для повторно сформированного базового класса.

Настройка компонента в режиме конструктора метаданных

В режиме конструктора метаданных можно выбирать входные столбцы, а также добавлять и настраивать выходы и выходные столбцы, но возможность писать код не предусмотрена. После настройки конфигурации метаданных компонента переключитесь в режим конструктора кода для написания сценария.

Свойства, которые необходимо настроить в пользовательском редакторе, зависят от выбранной области применения компонента сценария. Компонент сценария можно настроить как источник, преобразование или назначение. В зависимости от того, как компонент используется, он поддерживает либо вход, либо выход, либо и вход и выход одновременно. Пользовательский код, который должен быть написан, применяется для обработки входных и выходных строк и столбцов.

Страница «Входные столбцы» окна Редактор преобразования «Сценарий»

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

В проекте кода, создаваемого на основе этих метаданных, элемент проекта BufferWrapper содержит класс для каждого входа и этот класс включает свойства типизированного метода доступа для каждого выбранного входного столбца. Например, если выбран целочисленный столбец CustomerID и строковый столбец CustomerName из входа с именем CustomerInput, то элемент проекта BufferWrapper будет содержать класс CustomerInput, производный от класса ScriptBuffer, а класс CustomerInput будет предоставлять доступ к целочисленному свойству с именем CustomerID и к строковому свойству с именем CustomerName. Благодаря наличию такого соглашения появляется возможность писать код с проверкой соответствия типов, подобный следующему:

Dim currentCustomerID as Integer = CustomerInput.CustomerID
Dim currentCustomerName as String = CustomerInput.CustomerName

Дополнительные сведения о том, как настраивать входные столбцы для конкретного типа компонента потока данных, см. в соответствующем примере в разделе Разработка компонентов сценария определенных типов.

Страница «Входы и выходы» окна Редактор преобразования «Сценарий»

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

  • При использовании в качестве источника компонент сценария не имеет входов и поддерживает несколько выходов.

  • При использовании в качестве преобразования компонент сценария поддерживает один вход и несколько выходов.

  • При использовании в качестве назначения компонент сценария поддерживает один вход и не имеет выходов.

В проекте кода, создаваемом на основе этих метаданных, элемент проекта BufferWrapper содержит класс для каждого входа и выхода. Например, если создается выход с именем CustomerOutput, то элемент проекта BufferWrapper будет содержать класс CustomerOutput, наследуемый от класса ScriptBuffer, а класс CustomerOutput будет включать свойства типизированного метода доступа для каждого созданного выходного столбца.

Настраивать выходные столбцы можно только на странице Входы и выходы. Входные столбцы для преобразований и назначений можно выбрать на странице Входные столбцы. Свойства типизированного метода доступа, созданные для разработчика в элементе проекта BufferWrapper, будут доступны только для записи для выходных столбцов. Свойства метода доступа для входных столбцов будут доступны только для чтения или для чтения и записи в зависимости от области применения, выбранной для каждого столбца на странице Входные столбцы.

Дополнительные сведения о настройке входов и выходов для конкретного типа компонента потока данных см. в соответствующем примере в разделе Разработка компонентов сценария определенных типов.

ПримечаниеПримечание

Хотя нельзя непосредственно настроить выход в качестве вывода ошибок в компоненте сценария для автоматической обработки ошибочных строк, но можно воспроизвести функциональные возможности вывода ошибок путем создания дополнительного выхода и использования сценария для направления строк в этот выход при соответствующих условиях. Дополнительные сведения см. в разделе Имитация вывода ошибок для компонента сценария.

Свойства ExclusionGroup и SynchronousInputID выходов

Свойство ExclusionGroup имеет ненулевое значение только в преобразованиях с синхронными выходами, где в коде выполняется фильтрация или ветвление, а каждая строка направляется в один из выходов, имеющих одно и то же ненулевое значение ExclusionGroup. Например, преобразование может направлять строки либо в выход по умолчанию, либо в вывод ошибок. При создании дополнительных выходов для этого сценария необходимо задать в качестве значения свойства SynchronousInputID целое число, которое совпадает со значением ID на входе компонента.

Свойство SynchronousInputID имеет ненулевое значение только в преобразованиях с синхронными выходами. Если это свойство равно нулю, выход является асинхронным. Для синхронного выхода, при использовании которого строки передаются в выбранный выход или выходы без добавления каких-либо новых строк, это свойство должно содержать значение ID входа компонента.

ПримечаниеПримечание

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

Если создается компонент с синхронными выходами, то для каждого выхода должно быть задано значение свойства SynchronousInputID, равное значениям ID входа компонента. Поэтому для каждого выхода, созданного редактором вслед за первым выходом, необходимо изменить значение свойства SynchronousInputID с нуля на значение ID входа компонента.

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

Пример перенаправления строк в один из двух синхронных выходов в компоненте сценария см. в разделе Создание синхронного преобразования с помощью компонента сценария.

Имена объектов в созданном сценарии

Компонент сценария анализирует имена входов и выходов, а также имена столбцов во входах и выходах, после чего на основе этих имен создает классы и свойства в элементе проекта BufferWrapper. Если найденные имена включают символы, не принадлежащие к категориям Юникода UppercaseLetter, LowercaseLetter, TitlecaseLetter, ModifierLetter, OtherLetter или DecimalDigitLetter, эти недопустимые символы удаляются из создаваемых имен. Например, удаляются пробелы, поэтому два входных столбца с именами FirstName и [First Name] интерпретируются как имеющие имя столбца FirstName, что приводит к получению непредсказуемых результатов. Чтобы избежать такой ситуации, имена входов и выходов и имена входных и выходных столбцов, используемых в компоненте сценария, должны содержать только символы из категорий Юникода, перечисленных в этом разделе.

Страница «Сценарий» окна Редактор преобразования «Сценарий»

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

ПримечаниеПримечание

В службах SQL Server 2008 Integration Services (SSIS) все сценарии предварительно скомпилированы. В предыдущих версиях приходилось указывать, должна ли была выполняться предварительная компиляция сценариев, задавая для задачи свойство Precompile.

Свойство ValidateExternalMetadata

Логическое значение свойства ValidateExternalMetadata указывает, должна ли в компоненте выполняться проверка по отношению к внешним источникам данных во время разработки или эту проверку следует отложить до времени выполнения. По умолчанию это свойство имеет значение True; иными словами, внешние метаданные проверяются и во время разработки, и во время выполнения. Может потребоваться присвоить этому свойству значение False, если внешний источник данных не доступен во время разработки (например, если в пакете загружается источник или создается назначение только во время выполнения).

Свойства ReadOnlyVariables и ReadWriteVariables

Можно вводить разделенные запятыми списки существующих переменных в качестве значений этих свойств, чтобы обеспечить доступ к переменным только для чтения или для чтения и записи в коде компонента сценария. Доступ к переменным в коде осуществляется с помощью свойств ReadOnlyVariables и ReadWriteVariables автоматически сформированного базового класса. Дополнительные сведения см. в разделе Использование переменных в компоненте сценария.

ПримечаниеПримечание

В именах переменных учитывается регистр букв.

ScriptLanguage

В качестве языка программирования для компонента сценария можно выбрать MicrosoftVisual Basic 2008 или MicrosoftVisual C# 2008.

Кнопка «Изменить сценарий»

После нажатия кнопки Изменить сценарий открывается интегрированная среда разработки средства MicrosoftVisual Studio для приложений (VSTA), в которой записывается пользовательский сценарий. Дополнительные сведения см. в разделе Кодирование и отладка компонента сценария.

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

На странице Диспетчеры соединений окна Редактор преобразования «Сценарий» можно добавлять и удалять диспетчеры соединений, предназначенные для применения в пользовательском сценарии. Обычно необходимость ссылаться на диспетчеры соединений возникает при создании компонента источника или назначения.

В проекте кода, который будет создан на основе этих метаданных, элемент проекта ComponentWrapper содержит класс коллекции Connections, имеющий свойство типизированного метода доступа для каждого выбранного диспетчера соединений. Каждое свойство типизированного метода доступа имеет такое же имя, что и сам диспетчер соединений, и возвращает ссылку на диспетчер соединений как экземпляр IDTSConnectionManager100. Например, если на странице Диспетчеры соединений редактора добавлен диспетчер соединений с именем MyADONETConnection, можно получить ссылку на этот диспетчер соединений в конкретном сценарии с помощью следующего кода:

Dim myADONETConnectionManager As IDTSConnectionManager100 = _
    Me.Connections.MyADONETConnection

Дополнительные сведения см. в разделе Соединение с источниками данных в компоненте сценария.

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

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

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