【问题标题】:Can I join data from 2 different DB2 databases? (Like SQL Server linked databases)我可以连接来自 2 个不同 DB2 数据库的数据吗? (如 SQL Server 链接数据库)
【发布时间】:2013-02-28 02:44:52
【问题描述】:

我正在增强现有的 java 应用程序。在 2 个不同的 DB2 数据库中有数据。该应用程序已经从 2 个不同的数据库中获取数据,但它总是先从一个数据库中查找,然后再从另一个数据库中查找。有没有办法使用一个 SQL SELECT 连接来自 2 个不同 DB2 数据库的数据?

这是我尝试过的:

CREATE ALIAS remote_orders FOR remote_db.schema.orders;

select *
from myid.remote_orders a
inner join local_schema.parts b on (a.key = b.key)
with ur FETCH FIRST 200 ROWS ONLY

我收到此错误:

STATEMENT REFERENCE TO REMOTE OBJECT IS INVALID. SQLCODE=-512, SQLSTATE=56023, DRIVER=4.14.113

我可以用临时表做点什么吗?我可以毫无错误地运行此选择,但它对我没有帮助......(还)

select *
from myid.remote_orders
with ur FETCH FIRST 200 ROWS ONLY

编辑:

DB2 Temp Table 可能会有所帮助。我能够创建一个。现在我需要(上床睡觉)并尝试选择它,然后加入。

【问题讨论】:

  • 如果将可以运行的部分放入子查询并加入它会怎样?
  • 好主意,但我尝试使用 where exists 子选择也得到相同的错误结果。
  • 我认为临时表的想法行不通。问题是会话是特定于连接的。如果您想编写代码以选择临时表,然后将连接更改为不同的架构,则临时表不再可用,因为您获得了一个新会话。

标签: sql db2 linked-server


【解决方案1】:

使用完全限定名称<database>.<user/schema>.<tablename>

类似:

select *
from DB1.myid.remote_orders a
inner join DB2.local_schema.parts b on (a.key = b.key)
with ur FETCH FIRST 200 ROWS ONLY

【讨论】:

  • 你试过上面的select了吗?我遇到了同样的错误,STATEMENT REFERENCE TO REMOTE OBJECT IS INVALID. SQLCODE=-512, SQLSTATE=56023, DRIVER=4.14.113
  • 您的服务器是否配置为允许联合服务?应该启用“联合”才能使此查询正常工作。
  • @MayurManani 您在回答中没有提到任何有关联合服务的内容。因此,这不是一个完整的答案。
猜你喜欢
  • 2013-11-11
  • 1970-01-01
  • 2019-03-09
  • 2019-12-27
  • 1970-01-01
  • 2022-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多