SQL Server链接服务器到oracle 8000限制

时间:2012-03-27 05:58:44

标签: oracle sql-server-2008

我的查询长度超过8000我尝试按照以下方式执行,但事实并非如此。我使用link求助。

Declare @query1 As varchar(8000)
Declare @query2 As varchar(8000)

    SELECT TOP 1000 * 
    FROM OPENQUERY(OPTIMA,@query1+@query2)

错误:

Msg 102, Level 15, State 1, Line 74
Incorrect syntax near '@query1'.

我不允许在远程服务器中创建视图或存储过程。

3 个答案:

答案 0 :(得分:0)

为您的查询创建Oracle DB的新视图,以便减少查询长度。

答案 1 :(得分:0)

OPENQUERY()在你的@query上有一个8KB的内置限制,你也不允许为输入使用变量(试图规避8KB限制)。

我仍然建议您在目标服务器上创建存储过程并以OPENQUERY()方式调用它。

参考:http://msdn.microsoft.com/en-us/library/ms188427.aspx

答案 2 :(得分:0)

几天前我遇到了同样的问题,基本上我使用'UNION ALL'来结合openquery中的多个查询。

我对此的解决方案是在本地服务器而不是远程服务器上进行联合,它没有增加被拉线的行数,因为我总是使用union all,它只是强迫我使用多个openquery陈述而不是单一陈述。

它完成了这项工作(因为我没有被授权在远程服务器上做任何事情)。 如果可以, hkf 和Jokke Heikkilä都有正确答案,只需在远程服务器上执行sp或视图。