对象名称<tablename>包含的前缀数量超过最大数量。最大值为2 </tablename>

时间:2014-04-11 19:07:56

标签: sql sybase rapidsql

我试图使用单个查询从不同服务器中的两个表中提取记录。 我在选择查询中使用以下格式....但我得到的是上述错误。

有没有办法可以在单个查询中从两个服务器中提取记录,如

select * from server1.db1.schema1.table1 s1,server2.db2.schema2.table2 s2 where s1.col1 = s2.col2

我正在使用sybase和rapidsql。

编辑:我正在使用Sybase Adaptive Server enterprise 15.5和快速SQL 8.1.0

1 个答案:

答案 0 :(得分:1)

您遇到语法错误的原因是Sybase ASE无法引用用于查询的外部数据库和表。查询仅支持语法DATABASE.OWNER.TABLEDATABASE..TABLE

使用Sybase ASE,您可以使用Component Integration Services (CIS)跨多个服务器进行查询。这允许您设置代理表或代理数据库,以提取驻留在远程服务器上的数据。需要使用sp_addserver将远程服务器添加到本地服务器,并且应该位于interfaces / sql.ini中,或者可以通过LDAP访问。

从那里你必须使用sp_addexternalogin

添加远程服务器的登录信息

接下来,您必须连接到远程服务器,并定义代理表或代理数据库。

完成此操作后,只要本地服务器连接到远程服务器,就可以将代理表/数据库视为系统的本地代码,以便进行查询。

我强烈建议您查看上面链接的CIS文档,因为有一些关于设置它的教程。