Сборка, развертывание и отладка пользовательских объектов
Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных Azure
После написания кода для пользовательского объекта служб Integration Services необходимо создать сборку, развернуть ее и интегрировать в конструктор служб SSIS, чтобы сделать его доступным для использования в пакетах, а также протестировать и выполнить отладку.
Действия по созданию, развертыванию и отладке пользовательского объекта для служб Integration Services
Пользовательская функциональность для объекта уже написана. Теперь необходимо протестировать ее и сделать доступной для пользователей. Действия очень похожи для всех типов пользовательских объектов, которые можно создать для служб Integration Services.
Ниже описывается порядок построения, развертывания и тестирования.
Подпишите сборку для формирования со строгим именем.
Постройте сборку.
Разверните сборку, переместив или скопируйв ее в соответствующую папку Служб Integration Services.
Установите сборку в глобальный кэш сборок (GAC).
Объект автоматически добавляется в область элементов.
Устраните неполадки в работе развернутой сборки, если необходимо.
Протестируйте и выполните отладку кода.
Теперь можно использовать конструктор служб 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.
Устранение неполадок развертывания
Если пользовательский объект отображается на панели элементов или в списке доступных объектов, но его не удается добавить в пакет, попробуйте выполнить следующие действия:
Выполните поиск в глобальном кэше сборок на предмет наличия в нем нескольких версий компонента. При наличии нескольких версий компонента в глобальном кэше сборок конструктор не может загрузить компонент. Удалите все экземпляры сборки из глобального кэша сборок и добавьте сборку заново.
Убедитесь в том, что только один экземпляр сборки существует в папке развертывания.
Обновите панель элементов.
Подключите Visual Studio к devenv.exe и задайте точку останова для пошагового выполнения кода инициализации, чтобы убедиться, что исключения не происходят.
Тестирование и отладка кода
Самый простой подход к отладке методов времени выполнения пользовательского объекта — начать dtexec.exe из Visual Studio после создания пользовательского объекта и запустить пакет, использующий компонент.
Если вы хотите отлаживать методы времени разработки компонента, такие как метод Validate , откройте пакет, использующий компонент во втором экземпляре Visual Studio, и подключитесь к его devenv.exe процессу.
Если вы также хотите отладить методы времени выполнения компонента при открытии пакета и запуске в конструкторе служб SSIS, необходимо принудительно приостановить выполнение пакета, чтобы также можно было подключиться к процессу DtsDebugHost.exe .
Отладка методов времени выполнения объекта путем подключения к dtexec.exe
Подпишите и постройте проект в конфигурации отладки, выполните развертывание и установку в глобальный кэш сборок, как описано в этом разделе.
На вкладке Отладка диалогового окна Свойства проекта выберите Запуск внешней программы в качестве значения для параметра Начальное действие и найдите файл dtexec.exe, который по умолчанию установлен в каталог C:\Program Files\Microsoft SQL Server\130\DTS\Binn.
В текстовом поле Параметры командной строки в разделе Параметры запуска введите аргументы командной строки, необходимые для выполнения пакета, который использует пользовательский компонент. Часто аргумент командной строки содержит параметр /F[ILE], за которым следуют путь и имя DTSX-файла. Дополнительные сведения см. в статье dtexec Utility.
В исходном коде, где это необходимо, задайте точки останова в методах времени выполнения компонента.
Выполните проект.
Отладка методов времени разработки пользовательского объекта путем присоединения к SQL Server Data Tools
Подпишите и постройте проект в конфигурации отладки, выполните развертывание и установку в глобальный кэш сборок, как описано в этом разделе.
В исходном коде, где это необходимо, задайте точки останова в методах времени разработки пользовательского объекта.
Откройте второй экземпляр Visual Studio и загрузите проект Служб Integration Services, содержащий пакет, использующий пользовательский объект.
В первом экземпляре Visual Studio подключитесь ко второму экземпляру devenv.exe , в котором загружается пакет, выбрав "Присоединить к процессу " в меню отладки первого экземпляра.
Запустите пакет из второго экземпляра Visual Studio.
Отладка методов времени выполнения пользовательского объекта путем присоединения к SQL Server Data Tools
После выполнения шагов, описанных в предыдущей процедуре, принудительно приостановите выполнение пакета, чтобы его можно было присоединить к DtsDebugHost.exe. Принудительно приостановить выполнение можно путем добавления точки останова в событие OnPreExecute либо добавления задачи "Скрипт" в проект и ввода скрипта, отображающего модальное окно сообщения.
Запустите пакет. При приостановке переключитесь на экземпляр Visual Studio, в котором открыт проект кода, и выберите "Присоединить к процессу" в меню отладки. Подсоединяться следует к экземпляру DtsDebugHost.exe, содержащемуся в списке Управляемые, x86 в столбце Тип, а не к экземпляру из списка x86.
Вернитесь к приостановленному пакету и продолжите выполнение после точки останова либо нажмите кнопку ОК, чтобы закрыть окно сообщения, выданного задачей "Скрипт", и продолжить выполнение и отладку пакета.
См. также
Разработка пользовательских объектов для служб Integration Services
Сохранение пользовательских объектов
Инструменты устранения неполадок при разработке пакета