Настройка компонента скрипта в редакторе компонента скрипта
Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных Azure
Прежде чем приступать к написанию пользовательского кода в компоненте скрипта, необходимо выбрать тип компонента потока данных, который должен быть создан (источник, преобразование или назначение), а затем настроить метаданные и свойства компонента в окне Редактор преобразования "скрипт".
Выбор типа создаваемого компонента
При добавлении компонента скрипта в область Поток данных конструктора служб SSIS появится диалоговое окно "Выбор типа компонента скрипта". Компонент должен быть предварительно настроен как источник, преобразование или назначение. После начального выбора можно продолжить настройку компонента в окне Редактор преобразования "скрипт".
Чтобы установить язык скрипта по умолчанию для компонента скрипта, воспользуйтесь параметром Язык сценариев на странице Общие диалогового окна Параметры. Дополнительные сведения см. в разделе General Page.
Основные сведения о двух режимах времени разработки
В конструкторе служб 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
Вы можете выбрать Microsoft Visual Basic или Microsoft Visual C# в качестве языка программирования для компонента скрипта.
Кнопка «Изменить скрипт»
Кнопка "Изменить скрипт" открывает интегрированную среду разработки набор средств Microsoft Visual Studio Tools для работы с приложениями (VSTA), в которой вы пишете пользовательский скрипт. Дополнительные сведения см. в разделе Кодирование и отладка компонента скрипта.
Страница «Диспетчеры соединений» окна «Редактор преобразования "Скрипт"»
На странице Диспетчеры соединений окна Редактор преобразования "скрипт" можно добавлять и удалять диспетчеры соединений, предназначенные для применения в пользовательском скрипте. Обычно необходимость ссылаться на диспетчеры соединений возникает при создании компонента источника или назначения.
В проекте кода, который будет создан на основе этих метаданных, элемент проекта ComponentWrapper содержит класс коллекции Connections, имеющий свойство типизированного метода доступа для каждого выбранного диспетчера соединений. Каждое свойство типизированного метода доступа имеет такое же имя, что и сам диспетчер соединений, и возвращает ссылку на диспетчер соединений как экземпляр IDTSConnectionManager100. Например, если на странице Диспетчеры соединений редактора добавлен диспетчер подключений с именем MyADONETConnection
, можно получить ссылку на этот диспетчер подключений в скрипте с помощью следующего кода:
Dim myADONETConnectionManager As IDTSConnectionManager100 = _
Me.Connections.MyADONETConnection
Дополнительные сведения см. в разделе Соединение с источниками данных в компоненте скрипта.