Sql 如何在AS400中连接来自两个不同服务器的两个表?
我正在使用AS400 7.1版 具有下列特征: ServerA SA-数据库A DBA-表格A TA 服务器B SB-数据库B DBB-表B TBSql 如何在AS400中连接来自两个不同服务器的两个表?,sql,ibm-midrange,db2-400,Sql,Ibm Midrange,Db2 400,我正在使用AS400 7.1版 具有下列特征: ServerA SA-数据库A DBA-表格A TA 服务器B SB-数据库B DBB-表B TB SELECT A.*, B.* FROM SA.DBA.TA A INNER JOIN SB.DBB.TB ON A.PN=B.PN WHERE A.PN='BFDKS'; 在AS400中连接来自两个不同服务器的两个表的正确语法是什么 我得到以下错误 关系数据库SA不在关系数据库目录中 我很确定这在Db2 for I中是不可能的 三部分名称对i来
SELECT A.*, B.*
FROM SA.DBA.TA A INNER JOIN SB.DBB.TB
ON A.PN=B.PN
WHERE A.PN='BFDKS';
在AS400中连接来自两个不同服务器的两个表的正确语法是什么
我得到以下错误
关系数据库SA不在关系数据库目录中
我很确定这在Db2 for I中是不可能的 三部分名称对i来说是新的,据我所知仅限于 插入mylib.mytable 从remotedb.somelib.sometable中选择* 看 或者在触发器程序中。。 看 DB2forLUW具有这样的联合功能
我看到的一个解决方法是使用用户定义的表函数UDTF从远程Db2 for I数据库返回行。我非常确定,这在Db2 for I数据库中是不可能的 三部分名称对i来说是新的,据我所知仅限于 插入mylib.mytable 从remotedb.somelib.sometable中选择* 看 或者在触发器程序中。。 看 DB2forLUW具有这样的联合功能
我看到的一个解决方法是使用用户定义的表函数UDTF从远程Db2 for I数据库返回行。在Db2 for I上是不可能的。但正如查尔斯所说,你可以做到:
-- run this instructions on server B
create table qtemp.SADBATA as (
SELECT A.* FROM SA.DBA.TA A
where A.PN='BFDKS'
) with data;
SELECT * FROM qtemp.SADBATA A INNER JOIN SB.DBB.TB ON A.PN=B.PN;
在DB2fori上不可能。但正如查尔斯所说,你可以做到:
-- run this instructions on server B
create table qtemp.SADBATA as (
SELECT A.* FROM SA.DBA.TA A
where A.PN='BFDKS'
) with data;
SELECT * FROM qtemp.SADBATA A INNER JOIN SB.DBB.TB ON A.PN=B.PN;
您需要在服务器B上创建指向服务器A的链接服务器。然后在服务器B上写入相同的查询。链接服务器名称可以是[SA]。您需要在服务器B上创建指向服务器A的链接服务器。然后在服务器B上写入相同的查询。链接服务器名称可以是[SA]。文档不明确。你可以创建一个由三部分组成的别名,我在回答中没有提到。创建别名文档中没有提到任何限制。但是developerworks上的所有示例都是针对createtable和insert的。我没有必要的资源来测试这一点。你不能从2台服务器或2个分区连接2个表,你会收到一条SQL0512消息。用V7R1测试。看见[这在DB2 connect中是可能的,它创建了一个联邦数据库,您可以跨服务器连接表。但这不是一个免费产品,我的理解是,您必须在windows或linux上安装它才能访问指定的数据库。文档不明确。您可以创建一个由三部分组成的别名,我在中没有提到这一点我的回答。创建别名文档中没有提到任何限制。但是developerworks上的所有示例都是针对创建表和插入的。我没有必要的资源来测试这一点。您不能从两台服务器或两个分区连接两个表,您会收到一条SQL0512消息。使用V7R1测试。请参阅[这在DB2 connect中是可能的,它创建了一个联邦数据库,您可以跨服务器连接表。但它不是免费产品,我的理解是,您必须在windows或linux上安装它才能访问数据库。