Azure Datafactory: поток данных не может получить доступ к базе данных

Я создал хорошее решение ETL с фабрикой данных. Мы обязательно перейдем к стадии производства, и теперь безопасность становится реальной проблемой. Почему-то я не могу понять это правильно ....

Я установил CosmosDB и SQL Server / DB в Azure. Я добавил их в виртуальную сеть и запретил любые подключения за пределами этой сети. В DataFactory я установил среду выполнения интеграции с конфигурацией виртуальной сети. Я добавил управляемую частную конечную точку в DataFactory, подключенную к серверу SQL. Я установил связанную службу для SQL-сервера, используя эту конечную точку. Когда я настраиваю набор данных с помощью этой связанной службы, он работает должным образом. Я могу успешно проверить соединение, выбрать таблицу и получить ее схему.

Однако ... Я установил поток данных, который извлекает данные из CosmosDB, творит с ними все виды магии и записывает их в приемник, используя набор данных, определенный выше. Когда я пытаюсь проверить соединение с этим приемником, он не сообщает, что не может получить доступ к базе данных SQL.

Я предполагаю, что это как-то связано с разницей между запуском конвейера (с использованием IR) и запуском потока данных (независимо от того, что он использует?). Однако я не могу найти, что запускает этот поток данных и как убедиться, что эта штука может получить доступ к серверу SQL.

Что я делаю неправильно?


person Croga    schedule 15.12.2020    source источник
comment
Это SQL Server на виртуальной машине или база данных SQL Azure? Сегодня потоки данных не могут подключаться к SQL Server, только к базе данных Azure SQL / SQL MI.   -  person Mark Kromer MSFT    schedule 15.12.2020
comment
Это база данных SQL Azure   -  person Croga    schedule 16.12.2020
comment
@Croga, вы получали сообщение об ошибке?   -  person Leon Yue    schedule 16.12.2020
comment
Конкретное сообщение об ошибке, которое я получаю при попытке доступа к серверу SQL из любого потока данных: в источнике 'DataSQLInvoiceView': java.lang.RuntimeException: не удается подключиться к базе данных SQL: 'jdbc: sqlserver: //dbdevsocdashboard.database.windows. net; database = {‹redact›} ',' Пользователь: ‹redact› '. Проверьте правильность конфигурации связанной службы и убедитесь, что брандмауэр базы данных SQL разрешает доступ среде выполнения интеграции. (конфиденциальная информация удалена :-))   -  person Croga    schedule 16.12.2020
comment
База данных SQL - это общедоступная или частная конечная точка? Если он находится за брандмауэром, вы должны установить исключение разрешающих служб Azure в своей базе данных SQL.   -  person Mark Kromer MSFT    schedule 17.12.2020
comment
@Отметка; База данных SQL находится в виртуальной сети с частной конечной точкой. Datafactory имеет частную конечную точку, связывающую ее с базой данных SQL. У меня создалось впечатление, что это единственное, что нужно, и что Разрешить службы Azure откроет базу данных SQL для всех служб Azure, а не только для моей фабрики данных.   -  person Croga    schedule 17.12.2020
comment
Также; Чтобы уточнить: у меня есть связанная служба с базой данных SQL, и тестовое соединение прошло успешно. У меня есть набор данных, использующий эту связанную службу, и тестовое соединение успешно. У меня есть конвейер, который использует этот набор данных, и его отладка прошла успешно. Однако, как только я использую набор данных в потоке данных, он терпит неудачу.   -  person Croga    schedule 17.12.2020
comment
Вы используете MSI auth? Если это по-прежнему не работает, включите параметр управляемой виртуальной сети в Azure IR.   -  person Mark Kromer MSFT    schedule 17.12.2020


Ответы (1)


После активации, а затем деактивации параметра «Запретить доступ к общедоступной сети» на странице настроек «Брандмауэры и виртуальные сети SQL Server» все заработало должным образом.

Видимо, пробовали ли вы его выключить и снова включить, это все еще решение некоторых проблем ...

person Croga    schedule 17.12.2020