【问题标题】:SQL server linked server to oracle 8000 limitSQL server 链接服务器到 oracle 8000 限制
【发布时间】:2015-10-09 00:18:26
【问题描述】:

我有一个长度超过 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'.

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

【问题讨论】:

  • 您遇到了什么错误?我很想说尝试存储过程,因为这似乎是糟糕的设计,而不是需要解决的问题。
  • 这与 Oracle 有什么关系?

标签: oracle sql-server-2008


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • heikkila 不允许创建视图 :(
    【解决方案3】:

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

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

    它完成了工作(因为我无权在远程服务器上执行任何操作)。 如果可以,hkf 和 Jokke Heikkilä 都有正确答案,只需在远程服务器上执行 sp 或查看即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      • 1970-01-01
      • 2013-10-14
      • 2010-11-19
      • 2011-05-30
      • 2011-01-13
      相关资源
      最近更新 更多