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

Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных Azure

После написания кода для пользовательского объекта служб Integration Services необходимо создать сборку, развернуть ее и интегрировать в конструктор служб SSIS, чтобы сделать его доступным для использования в пакетах, а также протестировать и выполнить отладку.

Действия по созданию, развертыванию и отладке пользовательского объекта для служб Integration Services

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

Ниже описывается порядок построения, развертывания и тестирования.

  1. Подпишите сборку для формирования со строгим именем.

  2. Постройте сборку.

  3. Разверните сборку, переместив или скопируйв ее в соответствующую папку Служб Integration Services.

  4. Установите сборку в глобальный кэш сборок (GAC).

    Объект автоматически добавляется в область элементов.

  5. Устраните неполадки в работе развернутой сборки, если необходимо.

  6. Протестируйте и выполните отладку кода.

Теперь можно использовать конструктор служб SSIS в SQL Server Data Tools (SSDT) для создания, обслуживания и запуска пакетов, предназначенных для различных версий SQL Server. Дополнительные сведения о влиянии этого улучшения на пользовательские расширения см. в разделе Получение пользовательских расширений служб SSIS, поддерживаемых несколькими версиями SSDT 2015 для SQL Server 2016

Подписывание сборки

Если сборка предназначена для общего доступа, ее необходимо установить в глобальный кэш сборок. После добавления сборки в глобальный кэш сборок сборку можно использовать приложениями, такими как SQL Server Data Tools (SSDT). Глобальный кэш сборок предъявляет к добавляемой сборке особое требование: она должна быть подписана строгим именем, что гарантирует глобальную уникальность сборки. Сборка со строгим именем имеет полное имя, включающее имя, культуру, открытый ключ и номер версии сборки. Среда выполнения использует эти сведения, чтобы найти сборку и отличить ее от других сборок с тем же именем.

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

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

  • Сборки со строгими именами

  • Создание пары ключей

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

Вы можете легко подписать сборку строгим именем в Visual Studio во время сборки. В диалоговом окне "Свойства проекта" выберите вкладку "Подпись". Выберите параметр для подписи сборки, а затем укажите путь к файлу ключа (SNK).

Сборка сборки

После подписывания проекта необходимо создать или перестроить проект или решение с помощью команд, доступных в меню "Сборка " SQL Server Data Tools. Решение может содержать отдельный проект для пользовательского интерфейса, который также должен быть подписан строгим именем и может строиться одновременно со сборкой.

Самый удобный метод для выполнения следующих двух шагов развертывания сборки и его установки в глобальном кэше сборок — это скрипт этих шагов в качестве события после сборки в Visual Studio. События сборки доступны на странице компиляции свойств проекта для проекта Visual Basic и на странице "События сборки" для проекта C#. В программах командной строки, например gacutil.exe, необходимо указывать полный путь. Пути, содержащие пробелы, и макросы, например, $(TargetPath), которые разворачиваются в пути, содержащие пробелы, необходимо заключать в кавычки.

Ниже приведен образец командной строки события после построения для пользовательского регистратора.

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\gacutil.exe" -u $(TargetName)  
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\gacutil.exe" -i $(TargetFileName)  
copy $(TargetFileName) "C:\Program Files\Microsoft SQL Server\130\DTS\LogProviders "  

Развертывание сборки

Конструктор служб SSIS находит пользовательские объекты, доступные для использования в пакетах, перечисляя файлы, найденные в ряде папок, созданных при установке служб SQL Server Integration Services. При использовании параметров установки SQL Server по умолчанию этот набор папок находится в папке C:\Program Files\Microsoft SQL Server\130\DTS. Однако если для пользовательского объекта была создана программа установки, следует проверить значение в разделе реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\SSIS\Setup\DtsPath, чтобы убедиться в правильности указанного местоположения этой папки.

Примечание.

Дополнительные сведения о развертывании пользовательских компонентов с поддержкой нескольких версий в SQL Server Data Tools см. в разделе Получение пользовательских расширений служб SSIS, поддерживаемых несколькими версиями SSDT 2015 для SQL Server 2016.

Можно поместить сборку в папку двумя способами.

  • Переместить или скопировать скомпилированную сборку в соответствующую папку после ее построения. (Для удобства можно включить команду копирования в событие после построения.)

  • Построить сборку непосредственно в нужной папке.

Следующие папки развертывания, расположенные в каталоге C:\Program Files\Microsoft SQL Server\130\DTS, используются для различных типов пользовательских объектов:

Пользовательский объект Папка развертывания
Задача Задачи
Диспетчер соединений Связи
Регистратор LogProviders
Компонент потока данных PipelineComponents

Примечание.

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

Установка сборки в глобальном кэше сборок

Чтобы установить сборку задачи в глобальный кэш сборок (GAC), используйте программу командной строки gacutil.exe или перетащите сборки в каталог %system%\assembly. Для удобства можно включить вызов программы gacutil.exe в событие после построения.

Следующая команда устанавливает компонент с именем MyTask.dll в глобальный кэш сборок (GAC) с помощью программы gacutil.exe.

gacutil /iF MyTask.dll

После установки новой версии пользовательского объекта необходимо закрыть и повторно открыть конструктор служб SSIS. Если устаревшие версии пользовательского объекта были ранее установлены в глобальный кэш сборок, необходимо удалить их перед установкой новой версии. Чтобы удалить сборку, запустите программу gacutil.exe и укажите имя сборки с параметром /u.

Дополнительные сведения о глобальном кэше сборок см. в разделе "Глобальный кэш сборок" (Gactutil.exe) в платформа .NET Framework Tools.

Устранение неполадок развертывания

Если пользовательский объект отображается на панели элементов или в списке доступных объектов, но его не удается добавить в пакет, попробуйте выполнить следующие действия:

  1. Выполните поиск в глобальном кэше сборок на предмет наличия в нем нескольких версий компонента. При наличии нескольких версий компонента в глобальном кэше сборок конструктор не может загрузить компонент. Удалите все экземпляры сборки из глобального кэша сборок и добавьте сборку заново.

  2. Убедитесь в том, что только один экземпляр сборки существует в папке развертывания.

  3. Обновите панель элементов.

  4. Подключите Visual Studio к devenv.exe и задайте точку останова для пошагового выполнения кода инициализации, чтобы убедиться, что исключения не происходят.

Тестирование и отладка кода

Самый простой подход к отладке методов времени выполнения пользовательского объекта — начать dtexec.exe из Visual Studio после создания пользовательского объекта и запустить пакет, использующий компонент.

Если вы хотите отлаживать методы времени разработки компонента, такие как метод Validate , откройте пакет, использующий компонент во втором экземпляре Visual Studio, и подключитесь к его devenv.exe процессу.

Если вы также хотите отладить методы времени выполнения компонента при открытии пакета и запуске в конструкторе служб SSIS, необходимо принудительно приостановить выполнение пакета, чтобы также можно было подключиться к процессу DtsDebugHost.exe .

Отладка методов времени выполнения объекта путем подключения к dtexec.exe

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

  2. На вкладке Отладка диалогового окна Свойства проекта выберите Запуск внешней программы в качестве значения для параметра Начальное действие и найдите файл dtexec.exe, который по умолчанию установлен в каталог C:\Program Files\Microsoft SQL Server\130\DTS\Binn.

  3. В текстовом поле Параметры командной строки в разделе Параметры запуска введите аргументы командной строки, необходимые для выполнения пакета, который использует пользовательский компонент. Часто аргумент командной строки содержит параметр /F[ILE], за которым следуют путь и имя DTSX-файла. Дополнительные сведения см. в статье dtexec Utility.

  4. В исходном коде, где это необходимо, задайте точки останова в методах времени выполнения компонента.

  5. Выполните проект.

Отладка методов времени разработки пользовательского объекта путем присоединения к SQL Server Data Tools

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

  2. В исходном коде, где это необходимо, задайте точки останова в методах времени разработки пользовательского объекта.

  3. Откройте второй экземпляр Visual Studio и загрузите проект Служб Integration Services, содержащий пакет, использующий пользовательский объект.

  4. В первом экземпляре Visual Studio подключитесь ко второму экземпляру devenv.exe , в котором загружается пакет, выбрав "Присоединить к процессу " в меню отладки первого экземпляра.

  5. Запустите пакет из второго экземпляра Visual Studio.

Отладка методов времени выполнения пользовательского объекта путем присоединения к SQL Server Data Tools

  1. После выполнения шагов, описанных в предыдущей процедуре, принудительно приостановите выполнение пакета, чтобы его можно было присоединить к DtsDebugHost.exe. Принудительно приостановить выполнение можно путем добавления точки останова в событие OnPreExecute либо добавления задачи "Скрипт" в проект и ввода скрипта, отображающего модальное окно сообщения.

  2. Запустите пакет. При приостановке переключитесь на экземпляр Visual Studio, в котором открыт проект кода, и выберите "Присоединить к процессу" в меню отладки. Подсоединяться следует к экземпляру DtsDebugHost.exe, содержащемуся в списке Управляемые, x86 в столбце Тип, а не к экземпляру из списка x86.

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

См. также

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