Разработка пользовательских объектов для служб Integration Services
Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных Azure
Если объекты потока управления и потока данных, включенные в sql Server Integration Services, не полностью соответствуют вашим требованиям, вы можете разрабатывать множество типов пользовательских объектов самостоятельно, включая:
Пользовательские задачи.
Пользовательские диспетчеры соединений. Соединение с внешними источниками данных, не поддерживаемыми в настоящее время.
Пользовательские регистраторы. Регистрация событий пакета в форматах, не поддерживаемых в настоящее время.
Пользовательские перечислители. Поддержка итерации по набору объектов или форматов значений, не поддерживаемых в настоящее время.
Пользовательские компоненты потока данных. Могут быть настроены источники, преобразования или назначения.
Объектная модель Служб Integration Services упрощает эту настраиваемую разработку с базовыми классами, предоставляющими согласованную и надежную платформу для пользовательской реализации.
Если не требуется повторно использовать пользовательскую функциональность в нескольких пакетах, задача «Скрипт» и компонент скрипта предоставляют все возможности для использования языка программирования управляемого кода при значительно меньшем объеме необходимой для этого кода инфраструктуры. Дополнительные сведения см. в разделе Сравнение решений со сценариями и пользовательских объектов.
Шаги разработки пользовательского объекта для служб Integration Services
При разработке пользовательского объекта для использования в службах Integration Services вы разрабатываете библиотеку классов (библиотеку DLL), которая будет загружаться во время разработки и выполнения конструктором служб SSIS и средой выполнения служб Integration Services. Наиболее важными для реализации методами являются не те, которые вызываются из собственного пользовательского кода, а те, которые вызываются средой выполнения в соответствующие моменты для инициализации и проверки компонента и активации его функциональности.
Ниже перечислены шаги разработки пользовательского объекта:
Создайте новый проект типа библиотеки классов на предпочитаемом языке программирования управляемого кода.
Создайте класс, наследующий от соответствующего базового класса, как показано в следующей таблице.
Примените к новому классу соответствующий атрибут, как показано в следующей таблице.
Переопределите методы базового класса и напишите код для пользовательской функциональности своего объекта.
При необходимости создайте пользовательский интерфейс для своего компонента. Для упрощения развертывания пользовательский интерфейс можно разрабатывать как отдельный проект в рамках того же решения и построить его как отдельную сборку.
При необходимости можно отобразить ссылку на образцы кода и содержимое справки по пользовательскому объекту в панели элементов служб SSIS.
Выполните построение, развертывание и отладку нового пользовательского объекта, как описывается в разделе Построение, развертывание и отладка пользовательских объектов.
Базовые классы, атрибуты и важные методы
Эта таблица предоставляет простую ссылку на наиболее важные элементы объектной модели служб Integration Services для каждого типа настраиваемого объекта, который можно разрабатывать.
Пользовательский объект | Базовый класс | Атрибут | Важные методы |
---|---|---|---|
Задача | Task | DtsTaskAttribute | Execute |
Диспетчер соединений | ConnectionManagerBase | DtsConnectionAttribute | AcquireConnection, ReleaseConnection |
Регистратор | LogProviderBase | DtsLogProviderAttribute | OpenLog, , LogCloseLog |
Перечислитель | ForEachEnumerator | DtsForEachEnumeratorAttribute | GetEnumerator |
Компонент потока данных | PipelineComponent | DtsPipelineComponentAttribute | ProvideComponentProperties, , PrimeOutputProcessInput |
Предоставление ссылок на образцы кода и содержимое справки
Для отображения в панели элементов служб SSIS ссылки на образцы кода и содержимое справки по пользовательскому объекту, использующему управляемый код, используются следующие свойства.
Microsoft.SqlServer.Dts.Pipeline.DTSPipelineComponentAttribute.SamplesTag*
Microsoft.SqlServer.Dts.Pipeline.DTSPipelineComponentAttribute.HelpCollection*
Microsoft.SqlServer.Dts.Pipeline.DTSPipelineComponentAttribute.HelpKeyword*
Microsoft.SqlServer.Dts.Runtime.DTSTaskAttribute.SamplesTag*
Microsoft.SqlServer.Dts.Runtime.DTSTaskAttribute.HelpCollection*
Microsoft.SqlServer.Dts.Runtime.DTSTaskAttribute.HelpKeyword*
Чтобы отобразить ссылку на образцы кода и содержимое справки по пользовательскому объекту, использующему собственный код, добавьте в файл скрипта реестра (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 | Расширенный редактор |
Внешние ресурсы
- Запись в блоге Процесс построения решения Visual Studio выдает предупреждение о косвенной зависимости от сборки .NET Framework из-за ссылок служб SSIS на сайте blogs.msdn.com.
См. также
Сохранение пользовательских объектов
Сборка, развертывание и отладка пользовательских объектов