我们在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。
答案 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文件?
host1
和host2
- 因此,两台不同的机器都有自己的INFORMIXDIR。我对-931消息的猜测是,他们不共享INFORMIXSQLHOSTS文件(这可能意味着每个文件都有自己的INFORMIXDIR
),并且每个文件中的信息不包括其他服务器。
如果他们没有使用相同的INFORMIXSQLHOSTS文件(即默认情况下为文件$INFORMIXDIR/etc/sqlhosts
,除非被$INFORMIXSQLHOSTS
环境变量覆盖),请确保文件中的信息是等效的 - 或者,至少每个都包括另一个的条目。
dbaccess -version
或onstat -version
会告诉您是否还不知道。)/etc/hosts
文件或其网络等效文件是否包含相关信息,以便每台机器都知道如何连接到另一台机器?如果它们在同一个INFORMIXDIR中并使用相同的INFORMIXSQLHOSTS文件,那么回过头来我们会再考虑一下。