资讯动态

Windows下Informix Client SDK 4.10安装配置与连接排查

发布时间:2026/10/27 2:19:59 来源:尧图企业网站定制
简介Informix Client SDK 4.10 for Windows 面向需要在 Windows 32 位环境下连接和开发 Informix 数据库的开发者提供 API、驱动与配套文档帮助完成数据查询、事务处理及客户端配置等任务并提升应用开发与排错效率。压缩包共 13 个文件约 176.72MB以 6 个 txt 说明、3 个 dll 动态库、1 个 properties 配置文件和 1 个 pdf 文档为主另含 html 与 exe 安装程序覆盖开发接口、部署组件和参考手册等用途。已有 620 人学习下载适合具备一定数据库基础、需要搭建 Informix 客户端环境的读者参考使用。包内文档可查阅安装说明、版本发布记录及各语言接口要点开发者指南与 API 参考涉及嵌入式 SQL、JDBC 访问、错误处理、性能优化和安全设置properties 配置文件便于理解服务器地址、端口与数据库名等连接参数动态库和安装程序则支撑应用运行与联调能帮助读者较快理清 SDK 的组成与使用路径。1. Informix Client SDK 4.10 与 4.1.0同一个包两种叫法搜informix client sdk 4.1.0的人十有八九最后拿到手的是 4.10 的安装包然后对着文件名愣一下是不是下错了其实这两个写法指的是同一支产品4.10 不是 4.1 的第十个补丁它就是版本号本身的写法小数点后跟的是两位。这一点没弄清后面选 32 位还是 64 位、装完为什么 ODBC 管理器里空荡荡、应用为什么一启动就喊找不到 DLL全都会跟着乱。这类环境多半出现在老系统边上一套跑了多年的 ERP 或报表服务还挂在 Informix 库上换机、扩容、上新应用时客户端得在新机器上重新装一遍。装顺了半小时的事装不顺能耗掉一整天最后连报错信息都看不懂。下面记录的是 Windows 上把 4.10 装完、配好、验证能真正连上库的完整过程。2. 装前核对位数、端口、locale 三件事定不下来就别点下一步动手之前先把三件事钉死比装完再回头返工划算得多。这三件事分别决定你下哪个安装包、网络能不能通、以及连上之后中文会不会变成问号。我见过太多人是装完了才发现位数不对卸载重来。2.1 位数看的是调用方不是操作系统最常见的误判是按操作系统选包机器是 64 位的就下 64 位。错。Informix Client SDK 4.10 在 Windows 上 32 位和 64 位是两套独立安装包注册的 ODBC 驱动、装出来的 DLL 也是分开的判断依据应该是那个要连数据库的进程本身是几位。一个 32 位的旧报表程序跑在 64 位 Windows 上它只能加载 32 位的ifx系列 DLL也只能看到 32 位的 ODBC 驱动。你要是给它装了 64 位客户端程序启动时就会报「找不到指定的模块」或者 0x7f 之类的加载错误而命令行里用 64 位工具测试又一切正常非常迷惑。拿不准的时候在那个应用的宿主进程里跑一下这两行比翻文档快# 在目标应用所在的环境里执行,或者直接在应用自己的脚本宿主里跑 [Environment]::Is64BitProcess # 当前进程是 64 位则为 True [Environment]::Is64BitOperatingSystem # 操作系统是 64 位则为 True第一行是当前进程的位数第二行才是操作系统。两个值不一致进程 False、系统 True就说明你面对的是 32 位应用跑在 64 位系统上这时候 32 位客户端才是正解。如果一台机器上同时有 32 位和 64 位的应用要连库那就得两套都装互不冲突但要记住它们各自的 DSN 是分开管理的。另外还要想清楚是这台机器直接连库还是经由中间件、应用服务器转发。如果是后者客户端要装在真正发起连接的那台机器上装在自己办公电脑上是白费功夫。2.2 端口通不通别等装完才发现Informix 走的是自己的一套监听端口sqlhosts 里那一列 service name 最终对应的就是这个端口。装之前先用目标机器测一下能省掉后面大量「到底是客户端配错了还是网络不通」的扯皮。# 把 10.20.30.40 和 9088 换成实际的库主机地址和 service 端口 Test-NetConnection -ComputerName 10.20.30.40 -Port 9088重点看输出里的TcpTestSucceededTrue 才算通。如果这里是 False后面所有配置都不用做了先找网络或库那边的负责人确认监听地址、端口和访问策略。常见做法是先在一台已经能连库的老机器上查一下它 sqlhosts 里写的端口照抄过来测别自己猜。还要注意库主机监听的可能不是单一地址有些环境只监听内网某块网卡。用 IP 测通了就别在配置里改成主机名避免 DNS 解析绕一圈又出问题。2.3 locale 对不上数据全是问号字符集这一项最容易被跳过。Informix 的客户端有CLIENT_LOCALE和DB_LOCALE两个变量前者管客户端这一侧怎么解释字符后者声明你期望连的那个库是什么字符集。两边对不上轻则中文列显示成乱码重则连接阶段直接抛出 locale 相关的错误。问库那边要一个准确的值或者在能连的机器上查一把-- 在已连通的环境里查库的 locale 设置,记下来照抄 select unique dbs_collate, dbs_collate_name from sysmaster:sysdbslocale;查到的值就是DB_LOCALE该填的东西。常见的组合是纯英文环境用en_US.819或en_US.CP1252带中文的库用zh_CN.GB18030-2000这类。不确定就先按老机器上的环境变量抄别自己发明一个。提示这三件事最好在开工前写成一行记录贴在工单里——应用位数、库主机端口、库 locale。后面任何一步出问题先回头看这行记录能排除掉一半的怀疑方向。3. 安装 Informix Client SDK 4.10从 setup.exe 到静默批量的完整过程安装本身不复杂复杂的是「装到哪、装哪些组件、装完怎么确认没缺件」。这一步做扎实后面配置阶段能少踩一半坑。3.1 目录规划INFORMIXDIR 定下来就别再改安装向导会让你指定一个安装目录这个目录后面会成为环境变量INFORMIXDIR的值而且会被写进注册表、写进各种配置。装完之后再改目录等于把整套配置推倒重来所以第一次就要定好。我的习惯是不用默认路径统一放C:\informix。原因很实际默认路径通常在Program Files下面带空格某些老应用在拼接 DLL 路径时对空格处理得很糟糕排查起来极其费劲。另外路径里绝对不要出现中文出问题时日志里的路径会变成一堆问号连错在哪都看不出来。路径用途要点C:\informixINFORMIXDIR 根目录无空格、无中文、独立磁盘分区更好C:\informix\bin可执行文件与 DLL必须进 PATH且尽量靠前C:\informix\etc\sqlhosts连接定义文件纯文本保存为 ANSIC:\informix\etc\services服务名与端口映射与 sqlhosts 里的名字对应C:\informix\tmpDBTEMP 临时目录单独建给足空间如果机器上已经装过别的版本比如老项目留下的 4.50 或者更早的 4.10 补丁包务必先确认它们装在哪、环境变量指向谁。两个版本共存不是不行但 PATH 里谁在前谁生效非常容易搞混。稳妥做法是新版本装到全新目录用完整的绝对路径去调工具别依赖 PATH 的顺序。3.2 图形化安装的点击顺序以管理员身份运行安装包里的setup.exe右键「以管理员身份运行」这一步别省否则写注册表和写系统目录可能失败装完看起来正常实际组件缺一半。向导里的关键几屏是这样第一屏是许可协议接受后进入安装类型选择。这里通常有典型安装和自定义安装两个选项我一般选自定义因为典型安装会把一些用不上的组件一起塞进来而且不一定包含你要的 ODBC 驱动。组件选择页是重点至少要勾上这几项客户端核心文件、ODBC 驱动、命令行工具。如果应用用的是 .NET 提供程序或者 OLE DB对应组件也要一起勾。这一页没勾的东西装完之后在 ODBC 管理器里是看不到的很多人卡在这一步反复重装同一个包却始终找不到驱动。接着是安装目录填C:\informix。再往后是确认页点安装等进度条走完。整个过程几分钟期间不要中途取消取消后残留的注册表项会让下一次安装报「已存在更高版本」处理起来很麻烦。安装日志一般会落在临时目录或者安装目录下的日志文件里。装完如果心里没底翻一下日志末尾有没有 error 级别的记录比直接去试连接更主动。3.3 静默安装批量部署时的参数给一批机器装的时候一台台点向导不现实。Informix 的 Windows 安装包是基于通用安装器封装的支持响应文件方式静默执行常见做法是先在一台机器上录一遍响应文件再拿去批量跑。:: 第一步:在样机上录制响应文件,按向导正常点完一次 setup.exe /r /f1C:\pkg\csdk410.iss :: 第二步:在其他机器上用录好的响应文件静默安装 :: /s 静默 /f1 响应文件路径 /f2 安装日志路径 setup.exe /s /f1C:\pkg\csdk410.iss /f2C:\pkg\install_%COMPUTERNAME%.log/r是录制模式会在你点完向导后把每一步选择写进 iss 文件/s是静默执行/f1指定读哪个响应文件/f2指定日志写到哪。日志名带上机器名批量跑的时候哪台失败一眼就能定位。需要提醒的是不同打包方式的安装器对参数的支持不完全一致有的版本用/s有的用/quiet。动手前先在测试机上跑一次setup.exe /?看看它自己列出来的参数别照着别处的文档硬套。响应文件里的安装路径是写死的如果目标机器盘符不一样得先改 iss 文件里对应的那一行。3.4 装完先查这几处确认没缺件安装向导说完成不等于真的装全了。我一般在配置之前先做三个检查三十秒的事能挡掉后面很多莫名其妙的错误。第一看C:\informix\bin下有没有关键可执行文件至少应该有命令行工具和几个核心 DLL。目录是空的或者只有寥寥几个文件说明组件没选对直接重跑安装程序补组件别急着重启。第二打开 ODBC 数据源管理器看驱动列表里有没有 Informix 的驱动项。这里有个关键点64 位系统上 32 位和 64 位的 ODBC 管理器是两个不同的程序分别位于C:\Windows\System32\odbcad32.exe和C:\Windows\SysWOW64\odbcad32.exe。你装的是哪个位数的客户端就要去对应的那个管理器里看去错了地方会以为驱动没装上。第三看系统环境变量里有没有被安装程序自动写入的项。有些版本会自动加INFORMIXDIR和 PATH有些不会。不管加没加后面我都会按自己的规范重新写一遍避免出现半自动半手工的混乱状态。4. 配置三件套INFORMIXDIR 环境变量、sqlhosts 与 ODBC 数据源安装只解决了「文件在机器上」配置才决定「应用能不能连上」。这一章的三部分是有顺序的环境变量是地基sqlhosts 是地址簿ODBC 数据源是给应用看的门牌。4.1 环境变量五个值一个都不能省Windows 上配 Informix 客户端核心就是几个变量。用setx写系统级变量服务账号也能读到比在「系统属性」里手点更可控。:: /M 表示写入系统变量,不加 /M 只对当前用户生效 setx INFORMIXDIR C:\informix /M setx INFORMIXSERVER ol_informix /M setx INFORMIXSQLHOSTS C:\informix\etc\sqlhosts /M setx DBTEMP C:\informix\tmp /M setx DB_LOCALE zh_CN.GB18030-2000 /M setx CLIENT_LOCALE zh_CN.GB18030-2000 /M逐个说清楚INFORMIXDIR是根目录所有其他路径都可以相对它推导写错了后面全错。INFORMIXSERVER填的不是主机名而是 sqlhosts 文件里第一列那个数据库服务器名这是最容易填错的一个——很多人把 IP 填进去然后一直连不上。INFORMIXSQLHOSTS指向连接定义文件的完整路径不写的话客户端会去默认位置找多版本共存时经常找错。DBTEMP是排序、临时表用的目录别指向系统盘根目录也别让它跟其他软件共用。DB_LOCALE和CLIENT_LOCALE按第 2 章查到的值填两边一般保持一致。PATH 单独说因为它有坑:: 把 bin 目录放到 PATH 最前面,避免被其他版本抢先命中 setx PATH C:\informix\bin;%PATH% /M%PATH%在命令执行时会被展开成当前值再写回去所以这条命令重复执行会让 PATH 越来越长超过 1024 个字符还会被截断直接把 PATH 写坏。血泪经验是这条命令一台机器只跑一次跑之前先把当前 PATH 导出备份一份。注意环境变量写完不会影响已经打开的窗口和已经在跑的服务。命令行要新开窗口才生效Windows 服务必须重启一次才能读到新值。这一点在第 5 章还会再提一次因为它是「命令行能连、服务连不上」这类问题的头号原因。4.2 sqlhosts 与 setnet32同一份连接信息两种写法sqlhosts 是一个纯文本文件每行一条连接定义四列数据库服务器名、网络协议、主机名或 IP、服务名。# dbservername nettype hostname servicename ol_informix onsoctcp 10.20.30.40 infx_9088第一列ol_informix必须和INFORMIXSERVER的值完全一致大小写敏感。第二列onsoctcp是最常见的 TCP 协议类型如果库那边启用了加密这里会换成对应的 SSL 类型这个值要问库那边要不要猜。第三列填 IP 比填主机名稳少一层解析就少一个故障点。第四列是服务名不是端口号本身需要另外定义。服务名到端口的映射写在 services 文件里# 服务名 端口/协议 infx_9088 9088/tcp这个文件放在C:\informix\etc\services也可以直接追加到系统的 services 文件里。两处都写也没关系但别写成不同的端口否则不同工具可能解析出不同结果。setnet32是图形化配置工具在bin目录下它做的事本质上就是把这些信息写进注册表。打开后重点看两页Server Information 页填数据库服务器名、主机名、协议名、服务名跟 sqlhosts 那四列一一对应Environment 页可以覆盖INFORMIXDIR、INFORMIXSERVER这些值。这里的选择是要么用 sqlhosts 文件要么用 setnet32 写注册表尽量别两边都配。两边都配且值不一致时哪个生效取决于客户端版本的查找顺序出问题时你会陷入「文件里明明是对的」的自我怀疑。我一般统一用 sqlhosts 文件因为它是文本能进版本库换机器直接拷过去比逐个点图形界面可靠。如果确实要用 setnet32注意 64 位系统上注册表有重定向它写入的位置可能落在 32 位视图下而 64 位应用读的是另一处。装的是 64 位客户端却用 32 位的 setnet32 去配就会出现「配了但没生效」的现象。4.3 ODBC 数据源在对应的 odbcad32 里建 DSN驱动装好了、sqlhosts 配好了最后一步是给应用一个能直接引用的入口也就是 DSN。打开对应位数的 ODBC 数据源管理器切到「系统 DSN」选项卡——选系统 DSN 而不是用户 DSN是因为 Windows 服务跑在别的账号下读不到你个人账户的用户 DSN。点添加在驱动列表里选中名字包含 INFORMIX ODBC DRIVER 的那一项然后按下面这些项填配置项填什么常见错误Server Namesqlhosts 第一列的服务器名填成 IP 或主机名Host Name库主机 IP用主机名导致解析失败Service Nameservices 里定义的服务名直接填了端口号Protocolonsoctcp与 sqlhosts 不一致Database Name实际要连的库名留空导致部分工具报错User ID应用账号用了个人账号离职后连接全挂填完点「测试连接」会提示输入密码。这一步过了说明驱动、网络、认证三层都是通的。过不了也别急着改先看报错码第 5 章按错误码分了类。如果应用不是通过 DSN 而是走无 DSN 连接串那 DSN 可以不建但连接串里的 Server、Host、Service、Protocol 四项还是要齐填的值跟上面这张表一模一样。少了任何一项报出来的错通常会指向认证失败很容易误导方向。最后提醒一句账号的事不要用个人账号做应用连接。这在任何环境里都成立但在这种老系统上尤其致命因为改密码的流程往往没人维护等哪天连接突然全断才发现是某个人改了密码。5. 排查清单装完连不上的五种典型现象配置做完之后最耗时间的不是装是「明明每一步都照做了就是连不上」。下面这几条是我这些年反复遇到的按现象、原因、解决三段记遇到问题先在这里对号入座能省掉大量试错。5.1 现象ODBC 管理器里根本看不到 Informix 驱动打开 ODBC 数据源管理器驱动列表里翻遍了也没有 Informix 相关的项但安装程序明明提示成功了。原因通常有两个。一是打开的管理器位数不对装的是 32 位客户端却打开了 64 位的odbcad32.exe两边看到的驱动列表是各自独立的互相看不见。二是安装时在组件选择页没勾 ODBC 驱动那一项只装了核心文件这种情况下bin目录里有 DLL但驱动没注册。解决办法是先分别打开两个管理器确认从C:\Windows\System32\odbcad32.exe进的是 64 位视图从C:\Windows\SysWOW64\odbcad32.exe进的是 32 位视图两个都看一遍确定驱动到底注册在哪个视图下。如果两边都没有重跑安装包在组件页把 ODBC 驱动勾上。重装前不需要卸载安装程序会识别已有组件做增量安装。还有一种少见情况驱动文件在但注册表项被安全软件拦了。这种一般能在安装日志里看到注册表写入失败的记录把安装目录和安装程序加进白名单再跑一次即可。5.2 现象应用一启动就报找不到 DLL命令行测试却正常典型表现是应用弹窗报「无法加载 DLL」或者「找不到指定的模块」错误码可能是 126、193 或者 0x7f但你在同一台机器上开个命令行跑客户端自带的工具连库一切正常。这是位数不匹配的标准症状。64 位进程只能加载 64 位 DLL32 位进程只能加载 32 位 DLL操作系统层面就拦住了跟配置对不对没关系。命令行工具能跑是因为你跑的那个工具恰好和已安装的客户端位数一致。解决分两步。先确认应用进程的位数用第 2 章那两行 PowerShell 命令。再确认已安装客户端的位数看bin目录下 DLL 的实际情况或者看它注册在哪个 ODBC 视图下。两边不一致就补装另一个位数的客户端装到不同目录两套可以共存。补装之后要注意 PATH。两个版本的bin都在 PATH 里时谁在前面谁先被找到。我的做法是不依赖 PATH 做版本区分而是在应用自己的启动脚本里显式把对应版本的bin目录放到最前面这样每个应用用哪个版本一目了然不会互相干扰。5.3 现象网络通、端口通连接时报 -908 或 -930用端口测试工具测是通的但一发起数据库连接就失败报错里带 -908 或者 -930 这类负号数字。这类错误码基本都指向连接定义本身有问题而不是网络。最常见的是 sqlhosts 里的服务名在 services 文件里找不到对应条目客户端拿到一个名字却不知道往哪个端口发。其次是主机名解析失败——sqlhosts 第三列写的是主机名而这台机器解析不了这个名字。第三种是 sqlhosts 里第一列的服务器名和INFORMIXSERVER的值不一致差一个字母都不行。排查顺序是先把 sqlhosts 第三列的主机名换成 IP排除解析问题再核对第一列和INFORMIXSERVER是否逐字符一致最后检查 services 文件里有没有对应的服务名条目没有就补一行格式是「服务名 端口/tcp」。提示改完 sqlhosts 或 services 之后不需要重装也不需要重启机器但已经打开的命令行窗口和新起的进程要重新读文件改完新开窗口再测。还有一种情况是服务名和端口对上了但库那边监听的不是这个地址。这种从客户端这边查不出来需要让库那边确认监听配置。5.4 现象能连上但中文全是问号或者报 locale 错连接本身成功能执行查询但中文字段显示成乱码或者直接报 locale 相关的错误错误信息里带 -23101 之类的编号。原因就是CLIENT_LOCALE和DB_LOCALE跟库的实际字符集对不上。这两个值不是随便填一个「看起来像中文」的就行必须是库那边真实支持的字符集名称。填了一个库不认识的值客户端在建立会话阶段就会失败。解决办法是先查库的实际 locale用第 2 章那条查sysdbslocale的语句把查到的dbs_collate值原样填进DB_LOCALE。CLIENT_LOCALE一般跟它保持一致除非应用侧有明确的转换需求。改完之后记得重启应用进程环境变量对已运行的进程不生效。如果应用是以服务方式跑的要重启服务光重启命令行没用。5.5 现象命令行能连装成 Windows 服务就连不上同一台机器同一个账号命令行里跑工具连得好好的把应用注册成 Windows 服务之后连不上日志里报环境变量找不到或者连不上库。这是环境变量作用域的问题。用setx不加/M写的是当前用户变量只对你登录的账户可见Windows 服务通常跑在LocalSystem或者某个服务账号下读不到你的用户变量。同理你在图形界面里配的用户级环境变量服务同样看不到。解决办法是把所有相关变量都用/M写到系统级写完重启服务让新进程读到新值。如果服务是用特定账号跑的还要确认这个账号对INFORMIXDIR目录和DBTEMP目录有读写权限权限不足时报的错往往也是「连接失败」很容易往网络方向查。还有一点容易忽略服务启动时读取的环境变量是注册表里的值不是当前命令行窗口里的值。在窗口里set一下临时变量再启服务是不生效的。6. 验证跑通用 dbaccess、ODBC 和应用三层确认装完配完别急着交给业务方按三层验一遍每层都过了才算真的跑通。这三层是从底往上排的底层通不通、驱动层通不通、应用层通不通任何一层挂了都能立刻定位到范围。第一层用客户端自带的命令行工具直接连库这一层绕开 ODBC验证的是 sqlhosts、网络和认证。:: 连到 sysmaster 库,数一下系统表的条数,能出数字就说明会话建立了 echo select count(*) from systables; | dbaccess sysmaster -能返回一个数字说明INFORMIXDIR、INFORMIXSERVER、INFORMIXSQLHOSTS三个变量和 sqlhosts 文件都是对的。这一层失败问题一定在配置或网络不用往应用上想。第二层走 ODBC 通道验证验证的是驱动注册和 DSN 配置。# 用 DSN 建连接,执行一条最简单的查询 $conn New-Object System.Data.Odbc.OdbcConnection $conn.ConnectionString DSNinfx_demo;UIDappuser;PWD******; $conn.Open() $cmd $conn.CreateCommand() $cmd.CommandText select count(*) from systables $cmd.ExecuteScalar() $conn.Close()ConnectionString里的DSN换成你实际建的名字用户名密码用应用账号。如果这一步报「未找到数据源名称」说明位数又对不上了——PowerShell 本身是 64 位的它只能看到 64 位 DSN32 位 DSN 要用 32 位宿主去测。第三层让真正的应用跑一次它自己的功能比如打开一张报表、执行一次同步任务。这一层过了才算交付。三层的对应关系整理成一张表出问题时按表定位层级验证手段失败指向第一层dbaccess 连 sysmaster环境变量、sqlhosts、网络、账号第二层ODBC 连接串查询驱动位数、DSN 配置、services 映射第三层应用实际功能应用自身连接串、进程位数、服务账号权限三层都过完之后我还会做一件事把INFORMIXDIR下的 sqlhosts、services 和所有环境变量值导出一份文本跟应用配置一起归档。换机器的时候照这份文件重建比凭记忆点一遍快得多也不会漏项。从那以后我每次装这类客户端都强制自己先做完第 2 章那三项核对再动手宁可多花十分钟确认位数和 locale也不愿意装完再回头卸载。这套流程救过我很多次希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑