如何在客户端创建多个Informix ODBC驱动的DSN并解决IP覆盖问题
问题根本原因
该问题是Informix客户端ODBC驱动的默认规则导致:两个DSN配置时如果使用了相同的Informix数据库服务器名(DBSERVERNAME),驱动会全局缓存服务器名对应的IP/端口配置,后保存的DSN的IP会覆盖前一个同服务器名DSN的IP信息。
解决步骤
- 步骤1:分别登录主、备Informix服务器,执行命令
onstat -c | grep DBSERVERNAME,查询两个库各自的DBSERVERNAME实际值,两者默认不重名,记录备用。 - 步骤2:修改客户端的sqlhosts配置文件(默认路径为Informix客户端安装目录下的
/etc/sqlhosts,Windows客户端可通过Setnet32工具的「Host Information」标签页配置),新增两行记录:
确保第一列的服务器名和步骤1查询到的结果完全一致,不能自定义重名。主库DBSERVERNAME onsoctcp 主库实际IP 主库服务端口 备库DBSERVERNAME onsoctcp 备库实际IP 备库服务端口 - 步骤3:重新创建两个ODBC DSN,创建时「Server Name」字段分别选择对应库的DBSERVERNAME即可,IP会自动从sqlhosts配置读取,无需手动填写,保存后不会再出现IP覆盖问题。
- 步骤4:分别对两个DSN执行连接测试,验证连通性。
配置界面参考

内容的提问来源于stack exchange,提问作者Sajith PS
相关产品推荐
相关产品推荐

