我正在尝试在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上支持更大的数据?
答案 0 :(得分:0)
解决此问题的方法是仅从Oracle端获取一半的列长。
如果SQL端列定义为NVARCHAR(MAX)
(最大为4000),那么可以从Oracle端导入的最大长度是该长度的一半。因此,在Oracle列上进行SUBSTR(A.Column1,1,2000)
变得很有必要!