Предварительное SQL-соединение, вызывающее исключение SQLException в пользовательском действии Datafactory

#azure-data-factory #custom-activity #azure-batch

#azure-data-factory #пользовательское действие #azure-batch

Вопрос:

Я добавил код для пользовательской активности Azure datafactory в пакетной службе Azure и указал конвейер datafactory на службу bacth. Когда я выполняю код в локальной среде, он работает нормально. Но когда я загружаю его для запуска в пакетной службе Azure, он выдает и sqlexception

System.Data.SqlClient.SQLException: при установлении соединения с SQL Server произошла ошибка, связанная с сетью или конкретным экземпляром. Сервер не найден или недоступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений.

Комментарии:

1. Я бы предположил, что нет прямой видимости от облачной пакетной службы до готового SQL-сервера. Используя встроенные компоненты для подключения из облака к on-prem, это должно проходить через шлюз управления данными. Вы закодировали эквивалент в пользовательском коде? Другими словами, по какой причине вы должны полагать, что облачная пакетная служба может «видеть» ваш предварительный SQL-сервер?

2. Поскольку код выполняется в службе Azure bacth, необходимо ли иметь шлюз управления данными. Разве код не должен иметь доступ к серверу sql, как если бы код выполнялся на какой-либо виртуальной машине облачной службы?

Ответ №1:

Сегодня пользовательское действие не может получить доступ к исходному ресурсу. Шлюз перемещения данных можно использовать только в сценарии действия copy Sproc, и у него нет интерфейса для выполнения кода клиента.

Решение здесь: Попробуйте скопировать действие, чтобы скопировать ваши данные в хранилище Azure или другое общедоступное облако, к которому можно получить доступ. Затем запустите пользовательское действие. В противном случае вы можете попробовать vNet и ExpressRoute для подключения общедоступного облака Azure к среде onprem.