简体   繁体   English

通过链接服务器从Oracle数据库到SQL Server数据库选择BLOB列

[英]Selecting BLOB column from Oracle database to SQL Server database over linked server

How do I select a blob column from an Oracle database using OPENQUERY on a SQL Server that is using Linked Server to connect to the Oracle database? 如何在使用链接服务器连接到Oracle数据库的SQL Server上使用OPENQUERY从Oracle数据库中选择Blob列?

When I try using this syntax, I receive an error: 当我尝试使用此语法时,收到错误消息:

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

Errors: 错误:

OLE DB provider "MSDAORA" for linked server "LINKED_SERVER_NAME" returned message "Oracle error occurred, but error message could not be retrieved from Oracle.". 链接服务器“ LINKED_SERVER_NAME”的OLE DB提供程序“ MSDAORA”返回消息“发生Oracle错误,但无法从Oracle检索错误消息。”。 OLE DB provider "MSDAORA" for linked server "LINKED_SERVER_NAME" returned message "Data type is not supported.". 链接服务器“ LINKED_SERVER_NAME”的OLE DB提供程序“ MSDAORA”返回消息“不支持数据类型。”。

Can you change the OLE DB provider you're using to connect to Oracle? 您可以更改用于连接到Oracle的OLE DB提供程序吗? The Microsoft OLE DB Provider for Oracle does not support BLOB data types. 用于Oracle的Microsoft OLE DB提供程序不支持BLOB数据类型。 The Oracle OLE DB Provider does. Oracle OLE DB提供程序可以。 If you change the connection to Oracle to use the Oracle provider, it should work. 如果将与Oracle的连接更改为使用Oracle提供程序,则它应该可以工作。

This works: 这有效:

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

This returns only the first 4000 characters of the blob columns, and only works for columns that have text (not binary) data. 这仅返回Blob列的前4000个字符,并且仅适用于具有文本(非二进制)数据的列。 But it works for me. 但这对我有用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM