【问题标题】:The object name <TableName> contains more than the maximum number of prefixes. The maximum is 2对象名称 <TableName> 包含的前缀数量超过了最大数量。最大值为 2
【发布时间】:2014-05-26 02:08:36
【问题描述】:

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

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

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 和 Rapid SQL 8.1.0

【问题讨论】:

  • 您使用的是什么 Sybase 数据库和版本? ASE、IQ、SQL Anywhere?
  • 我正在使用 Sybase Adaptive Server Enterprise 15.5 和 Rapid SQL 8.1.0

标签: sql sybase rapidsql


【解决方案1】:

出现语法错误的原因是 Sybase ASE 无法以这种方式引用外部数据库和表进行查询。查询仅支持DATABASE.OWNER.TABLEDATABASE..TABLE 语法。

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

从那里你必须使用sp_addexternalogin添加远程服务器的登录信息

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    相关资源
    最近更新 更多