0

我正在尝试在 SQL Server 2008 R2 上运行它。

SELECT * FROM 
OPENQUERY(linked_oracle_server, 'SELECT A.Column1, A.Column2 from A')

这以前可以工作。当在 Oracle 端A.Column1更改为时,我们开始面临问题。nvarchar2(4000)

现在它失败并出现以下错误:

无法为“linked_oracle_server”的 OLE DB 提供程序“OraOLEDB.Oracle”创建列访问器

我玩了一下,如果我这样做的SUBSTR(A.Column1,1,2000)话!如果我将其更改为SUBSTR(A.Column1,1,2001)它会给出与上述相同的错误。这是否与NVARCHARSQL Server 端的最大限制为 4000 有关?NVARCHAR2(2000)即使NVARCHAR(MAX)能够在 SQL Server 上支持更大的数据,是否也无法导入更大的 Oracle 列?

4

1 回答 1

3

解决这个问题的方法是从 oracle 端只取一半的列长度。

如果 SQL 端列定义为NVARCHAR(MAX)(MAX 为 4000),那么您可以从 Oracle 端导入的最大长度是该值的一半。所以SUBSTR(A.Column1,1,2000)在 Oracle 专栏上做就变得很有必要了!

于 2018-10-27T13:14:31.983 回答