连接到Informix中的远程数据库

时间:2018-05-17 21:52:10

标签: database informix database-administration

我们在2个环境中安装了Informix数据库。

TEST

host1:1528/d7main:INFORMIXSERVER=m7uatserver

PROD

host2:1528/d7main:INFORMIXSERVER=m7server

我尝试在从UAT连接的PROD中的客户表上运行查询。

select  * from d7main@m7server:customer where active = 'Y';

我得到以下错误。

Attempt to connect to database server (m7server, conerr=-931, oserr=0) failed.
[SQL State=08004, DB Errorcode=-908] 

查询的编写方式有问题吗?或者DBA是否需要为此连接设置其他内容?

语法似乎正确基于 IBM Informix 12.10手册中的Access remote tables

1 个答案:

答案 0 :(得分:1)

finderr -908的输出是:

  

-908尝试连接数据库服务器(servername)失败。

     

程序或应用程序正在尝试访问另一个数据库服务器   但失败了。请注意当前语句中的服务器名称。

     

所需的数据库服务器不可用,或网络已关闭或   拥挤。请您的DBA和系统管理员验证   服务器和网络正常运行。如果网络拥挤,请使用   调整环境变量INFORMIXCONTIME和INFORMIXCONRETRY   连接时间。有关设置这些环境变量的信息,   请参阅“IBM Informix SQL指南:参考”。

     

此消息显示在V6.0及更高版本中。

同样,对于错误-931,该消息表示:

  

-931无法在/ etc / services中找到servicename service / tcp服务。

     

服务servicename未在网络配置文件中列出   / etc / services(UNIX)或\ etc \ services(DOS)。检查   $ INFORMIXDIR / etc / sqlhosts文件,并检查该服务的名称   所需服务器是正确的。如果是这样,请与您的网络管理员联系   找出服务未知的原因。如果您使用的是IBM Informix OnLine   对于NetWare,请检查客户端上的\ etc \ services文件   必填项目。

有一些古怪的古老参考 - OnLine for Netware是古老的历史,版本6.00。但是,基本要点是相似的。

在一台或两台计算机上似乎存在网络设置问题。

AFAICS,您在同一台计算机上安装了测试和生产服务器。他们是使用单个INFORMIXDIR还是每个都有自己独立的INFORMIXDIR? (两者都是可能的;两者都没有错。)他们是否共享INFORMIXSQLHOSTS文件?

  • ...抓点:你说host1host2 - 因此,两台不同的机器都有自己的INFORMIXDIR。

我对-931消息的猜测是,他们不共享INFORMIXSQLHOSTS文件(这可能意味着每个文件都有自己的INFORMIXDIR),并且每个文件中的信息不包括其他服务器。

如果他们没有使用相同的INFORMIXSQLHOSTS文件(即默认情况下为文件$INFORMIXDIR/etc/sqlhosts,除非被$INFORMIXSQLHOSTS环境变量覆盖),请确保文件中的信息是等效的 - 或者,至少每个都包括另一个的条目。

  • ......您使用的是Windows还是基于Unix的系统?
  • ...您使用的是哪个版本的Informix? (正在运行dbaccess -versiononstat -version会告诉您是否还不知道。)
  • ...每个主机是否都知道另一个 - /etc/hosts文件或其网络等效文件是否包含相关信息,以便每台机器都知道如何连接到另一台机器?

如果它们在同一个INFORMIXDIR中并使用相同的INFORMIXSQLHOSTS文件,那么回过头来我们会再考虑一下。