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


Разработка пользовательских объектов для служб Integration Services

Применимо к: SQL Server Integration Runtime служб SSIS в Фабрика данных Azure

Если объекты потока управления и потока данных, поставляемые со службами SQL Server Службы Integration Services, не отвечают потребностям пользователя, можно разработать множество типов собственных пользовательских объектов, в том числе следующие.

  • Пользовательские задачи.

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

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

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

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

Модель объектов служб Службы Integration Services поддерживает такую пользовательскую разработку с помощью базовых классов, формирующих согласованную надежную структуру для пользовательской реализации.

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

Шаги разработки пользовательского объекта для служб Integration Services

При разработке пользовательского объекта для использования в службах Службы Integration Services разрабатывается библиотека классов (DLL), которая затем загружается во время разработки и выполнения конструктором служб SSIS и средой времени выполнения служб Службы Integration Services. Наиболее важными для реализации методами являются не те, которые вызываются из собственного пользовательского кода, а те, которые вызываются средой выполнения в соответствующие моменты для инициализации и проверки компонента и активации его функциональности.

Ниже перечислены шаги разработки пользовательского объекта:

  1. Создайте новый проект типа библиотеки классов на предпочитаемом языке программирования управляемого кода.

  2. Создайте класс, наследующий от соответствующего базового класса, как показано в следующей таблице.

  3. Примените к новому классу соответствующий атрибут, как показано в следующей таблице.

  4. Переопределите методы базового класса и напишите код для пользовательской функциональности своего объекта.

  5. При необходимости создайте пользовательский интерфейс для своего компонента. Для упрощения развертывания пользовательский интерфейс можно разрабатывать как отдельный проект в рамках того же решения и построить его как отдельную сборку.

  6. При необходимости можно отобразить ссылку на образцы кода и содержимое справки по пользовательскому объекту в панели элементов служб SSIS.

  7. Выполните построение, развертывание и отладку нового пользовательского объекта, как описывается в разделе Построение, развертывание и отладка пользовательских объектов.

Базовые классы, атрибуты и важные методы

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

Пользовательский объект Базовый класс attribute Важные методы
Задача Task DtsTaskAttribute Execute
Диспетчер соединений ConnectionManagerBase DtsConnectionAttribute AcquireConnection, ReleaseConnection
Регистратор LogProviderBase DtsLogProviderAttribute OpenLog, Log, CloseLog
Перечислитель ForEachEnumerator DtsForEachEnumeratorAttribute GetEnumerator
Компонент потока данных PipelineComponent DtsPipelineComponentAttribute ProvideComponentProperties, PrimeOutput, ProcessInput

Для отображения в панели элементов служб SSIS ссылки на образцы кода и содержимое справки по пользовательскому объекту, использующему управляемый код, используются следующие свойства.

Чтобы отобразить ссылку на образцы кода и содержимое справки по пользовательскому объекту, использующему собственный код, добавьте в файл скрипта реестра (RGS-файл) записи SamplesTag, HelpKeyword и HelpCollection. Пример приведен ниже.

val HelpKeyword = s 'sql11.dts.designer.executepackagetask.F1'

val SamplesTag = s 'ExecutePackageTask'

Создание настраиваемого пользовательского интерфейса

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

В проекте или сборке пользовательского интерфейса обычно используются два класса — класс, реализующий интерфейс служб Службы Integration Services для пользовательских интерфейсов определенного типа пользовательского объекта, и форма Windows, отображаемая им для получения сведений от пользователя. Интерфейсы, реализуемые пользователем, имеют лишь несколько методов, и разработка пользовательского интерфейса не представляет особой сложности.

Примечание

Многие регистраторы служб Службы Integration Services имеют пользовательский интерфейс, реализующий интерфейс IDtsLogProviderUI и заменяющий текстовое поле Конфигурация отфильтрованным раскрывающимся списком доступных диспетчеров соединений. Однако пользовательские интерфейсы для пользовательских регистраторов в этом выпуске служб Службы Integration Services не реализованы. Указание значения для свойства UITypeName атрибута DtsLogProviderAttribute не имеет никакого эффекта.

В следующей таблице содержатся справочные сведения об интерфейсах, которые необходимо реализовать при разработке пользовательского интерфейса для каждого типа пользовательского объекта. В ней также поясняется, как выглядит результат работы для пользователя в случае, если для объекта не был разработан пользовательский интерфейс или если не удалось связать объект с пользовательским интерфейсом при помощи свойства UITypeName в атрибуте объекта. Хотя возможностей расширенного редактора может быть достаточно для компонента потока данных, окно «Свойства» является менее удобным для пользователя решением для задач и диспетчеров соединений, а пользовательский перечислитель Foreach и вовсе невозможно настроить без пользовательской формы.

Пользовательский объект Базовый класс для пользовательского интерфейса Редактор по умолчанию при отсутствии пользовательского интерфейса
Задача IDtsTaskUI Только окно свойств
Диспетчер соединений IDtsConnectionManagerUI Только окно свойств
Регистратор IDtsLogProviderUI

(Не реализовано в службах Службы Integration Services)
Текстовое поле в столбце Конфигурация
Перечислитель ForEachEnumeratorUI Только окно «Свойства». Область «Конфигурация перечислителя» редактора остается пустой.
Компонент потока данных IDtsComponentUI Расширенный редактор

Внешние ресурсы

См. также:

Сохранение пользовательских объектов
Сборка, развертывание и отладка пользовательских объектов