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

Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных 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 для каждого типа настраиваемого объекта, который можно разрабатывать.

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

Для отображения в панели элементов служб 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 Расширенный редактор

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

См. также

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