Извлечение из Oracle в SQL Сервер, вызывающий сбои и неправильное количество строк - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть SQL Серверная копия, которая извлекает данные из базы данных Oracle. Проблема, которая у меня возникла, кажется немного нерешенной.

В запросе, основанном на левом соединении, есть один столбец, который, как только я его добавил, либо

A) Извлечение просто завершается неудачно, без какого-либо сообщения об ошибке в задании history

B) Неправильное количество записей импортировано (т. е. выполняется запрос напрямую, хотя oracle показывает счетчик возвратов 2000 строк, и я получаю 1895 при импорте).

Удаление соединения и столбца решает проблему, но, к сожалению, это информация, которую я должен иметь. Я исследовал это в Интернете и о единственной информации, которую я нашел (что-то о добавлении в строку подключения), не решил проблему. Я также попытался учесть любые проблемы, которые могут возникнуть из-за наличия нулевых значений в столбце, добавив оператор CASE в запрос извлечения, как это (это значение GUID, которое вызывает проблему, обратите внимание на псевдокод):

,CASE
    WHEN oracle.guid IS NULL
    THEN '00000000-0000-0000-0000-000000000000'
    ELSE REPLACE(REPLACE(oracle.guid, '{', ''), '}', '') 
 END AS sql.guid

Как вы можете видеть здесь, я выполняю замену в запросе, поскольку исходное значение заключено в квадратные скобки, а целевые значения должны быть удалены.

Это исходит из Oracle 12 C до SQL Server 2016. Соединение устанавливается с помощью файла OraOLEDB12.dll, предоставляемого из установочного пакета ODA C.

...