Настройка реализации SSIS нашей компании выглядит следующим образом:
Локальные исходные базы данных, подключение VPN к Azure ADF и подключение VPN к машине разработки
Параметры проекта используются для настройки диспетчеров соединений проекта. Во время развертывания в Azure создается среда каталога SSISDB, на которую ссылается проект SSIS. Все параметры проекта отображаются в переменной среды. У проекта SSIS и всех включенных пакетов установлен ProtectionLevel = DontSaveSensitive. Свойства диспетчера подключений ConnectionString, ServerName, InitialCatalog, UserName и Password параметризованы, последний помечен как конфиденциальный.
Поставщик данных - OLEDB (Native OLE DB \ SQL Server Native Client 11.0). Строка подключения содержит, помимо параметров источника данных, идентификатора пользователя и исходного каталога, параметры «Provider = SQLNCLI11.1; Persist Security Info = True; Auto Translate = False;». На машинах удаленной разработки в Visual Studio (SSDT) параметры конфигурации создаются для локальной разработки (DevLocal), разработки в Azure (Разработка) и принятия в Azure (Принятие). Параметры проекта устанавливаются на правильные значения для каждой конфигурации с помощью опции «Добавить параметры в конфигурации» в редакторе параметров проекта.
Редактор параметров проекта, третья кнопка изображения выделена «Добавить параметры в конфигурации»
В двух ситуациях возникает проблема, когда я хочу выполнить пакеты в проекте. Во-первых, когда я хочу отладить пакет в Visual Studio, во время процесса проверки не удалось установить соединение с исходной базой данных из-за:
Ошибка: код ошибки SSIS DTS_E_OLEDBERROR. Произошла ошибка OLE DB. Код ошибки: 0x80040E4D. Доступна запись OLE DB. Источник: «Microsoft SQL Server Native Client 11.0» Результат: 0x80040E4D Описание: «Ошибка входа для пользователя DatabaseUserName».
Затем следует
[SR C REF [17 ]] Ошибка: код ошибки SSIS DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. При вызове метода AcquireConnection диспетчеру соединений «SRC1» произошел сбой с кодом ошибки 0xC0202009. Перед этим могут быть опубликованы сообщения об ошибках с дополнительной информацией о том, почему вызов метода AcquireConnection завершился неудачно.
Установка DelayValidation на True не решает проблему. Второй раз эта проблема возникает, когда я хочу запустить пакеты из среды выполнения интеграции Azure фабрики данных. Появляется то же сообщение об ошибке DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. Когда я помечаю свойство пароля как нечувствительное, проблема исчезает. Обратите внимание, что даже в ситуации, отмеченной как конфиденциальная, на машине удаленной разработки я смог:
- подключиться к SQL Server Management Studio и запросить базы данных SRC1 и SRC2;
- Подключите SSDT к базам данных SRC1 и SRC2 (соединения были в сети)), он может даже показать предварительный просмотр данных;
- Выполнять пакеты из каталога SSISDB, включая конфиденциальные параметры проекта.
Как мне добиться правильного выполнения пакетов в ADF, даже если параметры пароля помечены как конфиденциальные? Как я могу использовать SSDT и пакеты отладки, если соединения используют конфигурации и пароли помечены как конфиденциальные?