Oracle nvarchar2(4000)列不会导入SQL Server 2008 R2

时间:2013-12-14 19:45:08

标签: sql oracle sql-server-2008-r2 openquery

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

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

之前曾经工作过。当Oracle A.Column1更改为nvarchar2(4000)时,我们开始面临问题。

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

  

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

我正在玩一点,如果我做SUBSTR(A.Column1,1,2000)它有效!如果我将其更改为SUBSTR(A.Column1,1,2001),则会出现与上述相同的错误。这是否与SQL Server端最大限制为4000的NVARCHAR有关?有没有办法导入大小超过NVARCHAR2(2000)的Oracle列,即使NVARCHAR(MAX)能够在SQL Server上支持更大的数据?

1 个答案:

答案 0 :(得分:0)

解决此问题的方法是仅从Oracle端获取一半的列长。

如果SQL端列定义为NVARCHAR(MAX)(最大为4000),那么可以从Oracle端导入的最大长度是该长度的一半。因此,在Oracle列上进行SUBSTR(A.Column1,1,2000)变得很有必要!