Исходный компонент OData в SSIS не подключается

Это продолжение предыдущего вопроса: компонент источника OData в зависании служб SSIS.

Настроить

Я использую SSIS в Visual Studio 2015 (17.4) и хотел бы получить общедоступные данные NADAC с этой страницы, используя соединение OData: https://data.medicaid.gov/Drug-Pricing-and-Payment/NADAC-National-Average-Drug-Acquisition-Cost-/a4y5-998d.

Я успешно создал диспетчер соединений источника OData с базовым URL-адресом: https://data.medicaid.gov/api/odata/v4/ используя проверку подлинности Windows.

Я создал простой поток данных с 2 компонентами. Источник OData и назначение набора записей. Назначение набора записей указывает на переменную с типом данных объекта.

В моем потоке данных я успешно создал путь источника OData к ресурсу a4y5-998d и могу предварительно просмотреть данные.

На заднем плане вы можете видеть мои компоненты потока данных: источник OData и пункт назначения набора записей. В середине вы можете увидеть, как я настроил OData Source Editor для использования пути к ресурсу. Вверху вы можете увидеть предварительный просмотр данных из источника OData Снимок экрана с данными предварительного просмотра, макетом потока данных и конфигурацией OData Source Editor.

Основная проблема

Все выглядит хорошо, но когда я запускаю свой пакет в Visual Studio, я получаю следующую ошибку:

Информация: 0x4004300A в задаче потока данных, SSIS. Трубопровод: фаза проверки начинается. Ошибка: 0xC020801F в задаче потока данных, источник OData [2]: невозможно получить управляемое соединение из диспетчера соединений во время выполнения. Ошибка: 0xC0047017 в задаче потока данных, SSIS. Трубопровод: OData Source не прошел проверку и вернул код ошибки 0xC020801F. Ошибка: 0xC004700C в задаче потока данных, SSIS. Трубопровод: один или несколько компонентов не прошли проверку. Ошибка: 0xC0024107 в потоке данных. Задача: при проверке задачи возникли ошибки.

Я выделил ключевое предложение (не могу получить управляемое соединение из диспетчера соединений во время выполнения), но включил больше сообщений для контекста.

Поскольку это ошибка проверки, поток данных даже не запускается.

Посмотрев в интернете, в ряде мест можно предположить, что это может быть проблема с 32-битным /64-битным драйвером. Однако я включил и выключил Run64BitRuntime и каждый раз получаю один и тот же результат.

Я получаю одинаковый результат, независимо от того, запускаю ли я пакет в режиме SQL Server 2016 или SQL Server 2017.

HTTP против HTTPS

Когда я изменяю URL-адрес в редакторе диспетчера подключений OData на http вместо https, кажется, что дела идут немного лучше.

Пакет проверяется, и я получаю желтый кружащийся круг над OData Source. Но тогда я получаю сообщение:

Информация: 0x40043006 в задаче потока данных, SSIS. Трубопровод: начинается подготовка к выполнению. Информация: 0x40043007 в задаче потока данных, SSIS. Трубопровод: начинается этап перед выполнением. Информация: 0x4004300C в задаче потока данных, SSIS. Трубопровод: начинается фаза выполнения. Ошибка: 0xC02090F5 в задаче потока данных, источник OData [2]: источнику OData не удалось обработать данные. Основное соединение было закрыто: при отправке произошла непредвиденная ошибка. Ошибка: 0xC0047038 в задаче потока данных, SSIS. Трубопровод: код ошибки SSIS DTS_E_PRIMEOUTPUTFAILED. Метод PrimeOutput в источнике OData возвратил код ошибки 0xC02090F5. Компонент возвратил код ошибки, когда механизм конвейера вызвал PrimeOutput(). Значение кода ошибки определяется компонентом, но ошибка является фатальной, и конвейер прекратил выполнение. Перед этим могут быть сообщения об ошибках с дополнительной информацией о сбое. Информация: 0x40043008 в задаче "Поток данных", SSIS. Трубопровод: фаза после выполнения начинается. Информация: 0x4004300B в задаче потока данных, SSIS. Трубопровод: "Назначение набора записей" записал 0 строк. Информация: 0x40043009 в задаче потока данных, SSIS. Трубопровод: фаза очистки начинается. Задача не выполнена: задача потока данных

Ключевое предложение здесь: Источник данных OData не смог обработать данные. Основное соединение было закрыто: при отправке произошла непредвиденная ошибка.

Хотя пакет работает по-разному при использовании HTTP вместо HTTPS, я знаю, что это может быть что-то совершенно не связанное с фундаментальной проблемой. Это единственная вещь, которая до сих пор имела значение.

Резюме

Есть ли у кого-нибудь предложения по использованию компонента ODATA Source в SSIS для создания общедоступного канала OData? Кто-нибудь сможет заставить это работать? (Мой пакет довольно прост, если вы хотите попробовать сами.)

Это общедоступный канал OData без аутентификации. Компонент OData Source в SSIS очень прост: все, что ему действительно нужно, это URL. Я могу просматривать данные отлично.

Я озадачен тем, почему я не могу получить данные на самом деле загрузки. Это не должно быть так сложно. (У меня нет проблем с загрузкой данных в Power BI, например.)

Любая помощь, которую вы можете предложить, будет принята с благодарностью.

2 ответа

У меня была похожая проблема. В моем случае OData доступна только через https.

Эти ссылки очень помогли:

https://blogs.msdn.microsoft.com/dataaccesstechnologies/2018/01/16/tls-issue-with-ssis-package-while-accessing-odata-source-like-dynamics-ax-online/

https://blogs.perficient.com/2016/04/28/tsl-1-2-and-net-support/

Это была версия TLS, которая должна была быть 1.2, но сервер, использующий.Net Framework 4.5, не установил ее по умолчанию.

У меня была аналогичная проблема. В моем случае проблема заключалась в выделении места и заполнении SSISDB. Я освободил место и решил проблему.

Другие вопросы по тегам