Я пытаюсь создать пакеты SSIS с BIML для загрузки данных из Oracle (11.2) в промежуточную область нашего DWH на SQL Server. У меня не было никаких проблем с созданием работы в простом SSIS. Однако использование той же строки подключения на узле AdoNetConnection в BIML дает мне следующую ошибку проверки, когда я пытаюсь сгенерировать пакеты SSIS:
FlowFramework, Version=5.0.63316.0, Culture=neutral, PublicKeyToken=015f370a62f9a1a3. Node ADO NET Source: Could not execute Query on Connection ORA_TEST
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 25 - Connection string is not valid).
Формулировка «SQL Server» заставила меня задуматься, игнорируется ли по какой-либо причине указанный поставщик (если ошибка передается по конвейеру от основного поставщика). Я создал минимальный пример для целей тестирования, который представляет собой просто сопоставление источника и цели, и перепроектировал его с помощью BIMLExpress. Диспетчер соединений выглядит так (я добавил часть пароля):
<AdoNetConnection Name = "ORA_TEST"
CreateInProject = "true"
ConnectionString = "DATA SOURCE=XXXX:1521/XXXX;USER ID=XXXX;Password=XXXX;PERSIST SECURITY INFO=True;"
Provider = "Oracle.ManagedDataAccess.Client.OracleConnection, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
Обратный инженерный минимальный пример выдает ту же ошибку, даже если строка подключения и поставщик идентичны тем, которые я вижу, когда я щелкаю правой кнопкой мыши рабочий (созданный вручную) диспетчер соединений и нажимаю «Просмотреть код».
В нашем случае использование OleDb-соединения не вариант. Мы используем управляемую среду выполнения SSIS в Azure и не смогли заставить поставщика OleDb для Oracle работать с ней. Пакет, созданный вручную с использованием диспетчера соединений Ado.NET, работает, поэтому мне нужно найти способ создания пакета с подключением Ado.NET и поставщиком управляемого доступа к данным Oracle.
Любые идеи, как это исправить?
Вкратце: похоже, что BIML недостаточно функционирует с управляемым ODP.Net или даже с Oracle ODBC. Это могло бы работать лучше с Oracle Attunity. Но не теряйте время - если у вас есть сценарий, в котором вам нужно реплицировать несколько таблиц из Oracle в SQL, используйте конвейеры фабрики данных Azure с размещенной средой выполнения. У него есть свои придирки, но они не связаны с драйверами и типами данных. Просто работает.