2012-03-27 153 views
0

我有一个长度超过8000的查询我试图执行它的方式,但它不会。我用这个link寻求帮助。SQL服务器链接服务器到oracle 8000限制

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

    SELECT TOP 1000 * 
    FROM OPENQUERY(OPTIMA,@[email protected]) 

的错误:

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

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

+0

你得到的错误是什么?我很想说尝试一个存储过程,因为这看起来像是糟糕的设计,而不是需要解决的问题。 – hkf 2012-03-27 06:12:26

+0

@hkf增加了错误:) – kinkajou 2012-03-27 06:21:00

+0

这与Oracle有什么关系? – Rene 2012-03-27 07:34:25

回答

0

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

我仍然会推荐在你的目标服务器上创建一个存储过程,并用OPENQUERY()这样的方式来调用它。

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

0

对查询的Oracle DB进行新的视图,以便减少查询长度。

+0

heikkila不允许创建视图:( – kinkajou 2012-03-27 06:18:39

0

我一个前两天有同样的问题,基本上我是用“UNION ALL”到OPENQUERY内联合多个查询。

我对此的解决方案是在本地服务器而不是远程服务器上进行联合,它并没有增加被认为是电线的行数,因为我无论如何都使用联合,它只是强迫我使用多个openquery语句而不是一个单一的。

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