Выбор столбца BLOB из базы данных Oracle в базу данных SQL Server через связанный сервер

Как выбрать столбец BLOB-объектов из базы данных Oracle, используя OPENQUERY на сервере SQL, который использует связанный сервер для подключения к базе данных Oracle?

Когда я пытаюсь использовать этот синтаксис, я получаю сообщение об ошибке:

SELECT * FROM OPENQUERY(LINKED_SERVER_NAME , 
'Select blobColumn from TABLE') AS derivedtbl_1

Ошибки:

Поставщик OLE DB "MSDAORA" для связанного сервера "LINKED_SERVER_NAME" возвратил сообщение "Произошла ошибка Oracle, но не удалось получить сообщение об ошибке из Oracle". Поставщик OLE DB "MSDAORA" для связанного сервера "LINKED_SERVER_NAME" вернул сообщение "Тип данных не поддерживается".

2 ответа

Решение

Это работает:

SELECT * FROM OPENQUERY(LINKED_SERVER_NAME , 
'Select DBMS_LOB.SUBSTR(blobColumn,4000,1) from TABLE') AS derivedtbl_1

Это возвращает только первые 4000 символов столбцов BLOB-объектов и работает только для столбцов, которые имеют текстовые (не двоичные) данные. Но это работает для меня.

Можете ли вы изменить поставщика OLE DB, который вы используете для подключения к Oracle? Поставщик Microsoft OLE DB для Oracle не поддерживает типы данных BLOB. Oracle OLE DB Provider делает. Если вы измените соединение с Oracle для использования поставщика Oracle, оно должно работать.

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