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

Sql server 通过链接服务器将BLOB列从Oracle数据库选择到SQL Server数据库,sql-server,oracle,linked-server,blobs,Sql Server,Oracle,Linked Server,Blobs,如何在使用链接服务器连接到Oracle数据库的SQL Server上使用OPENQUERY从Oracle数据库中选择blob列 尝试使用此语法时,我收到一个错误: SELECT * FROM OPENQUERY(LINKED_SERVER_NAME , 'Select blobColumn from TABLE') AS derivedtbl_1 错误: 链接的OLE DB提供程序“MSDAORA” 返回服务器“链接的服务器名称” 消息“发生Oracle错误,但 无法检索错误消息 来自甲骨文

如何在使用链接服务器连接到Oracle数据库的SQL Server上使用OPENQUERY从Oracle数据库中选择blob列

尝试使用此语法时,我收到一个错误:

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

链接的OLE DB提供程序“MSDAORA” 返回服务器“链接的服务器名称” 消息“发生Oracle错误,但 无法检索错误消息 来自甲骨文。OLE数据库提供程序 链接服务器的“MSDAORA” “链接的服务器名称”返回消息 “不支持数据类型。”

这项工作:

SELECT * FROM OPENQUERY(LINKED_SERVER_NAME , 
'Select DBMS_LOB.SUBSTR(blobColumn,4000,1) from TABLE') AS derivedtbl_1
这仅返回blob列的前4000个字符,并且仅适用于包含文本(非二进制)数据的列。但它对我有效。

这有效:

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

这仅返回blob列的前4000个字符,并且仅适用于包含文本(非二进制)数据的列。但是它对我很有用。

您可以更改用于连接到Oracle的OLE DB提供程序吗?用于Oracle的Microsoft OLE DB提供程序不支持BLOB数据类型。Oracle OLE DB提供程序不支持。如果将与Oracle的连接更改为使用Oracle提供程序,它应该可以工作。

是否可以更改用于连接到Oracle的OLE DB提供程序?用于Oracle的Microsoft OLE DB提供程序不支持BLOB数据类型。Oracle OLE DB提供程序不支持。如果您将与Oracle的连接更改为使用Oracle提供程序,它应该可以正常工作。

实际上,我之前一直在想如何做到这一点,这时我偶然发现了我在上面发布的答案。好主意!事实上,早些时候我正试图弄清楚如何做到这一点,这时我无意中发现了我在上面发布的答案。好主意!如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码示例”按钮(
{}
),以很好地格式化和语法突出显示它!如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码示例”按钮(
{}
),以很好地格式化和语法突出显示它!如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码示例”按钮(
{}
),以很好地格式化和语法突出显示它!如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码示例”按钮(
{}
),以很好地格式化和语法突出显示它!