You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ibm_db连接AS400上的DB2遇SQL1598N授权问题求助

解决Electron中ibm_db连接AS400 DB2时的SQL1598N授权问题

问题背景

使用Electron的ibm_db库连接AS400(IBM i)上的DB2实例,执行代码后触发SQL1598N授权错误,DBA确认服务器端已包含DB2授权,无需额外购买。

代码示例

const connStr = "DATABASE=mydb01;HOSTNAME=192.168.0.15;UID=xxx;PWD=xxx;PORT=446;PROTOCOL=TCPIP";

const ibmdb = new Database()
ibmdb.open( connStr, (err, conn) => {
    console.log(err, conn)
})

报错信息

[Error: [IBM][CLI Driver] SQL1598N  An attempt to connect to the database server failed because of a licensing problem.  SQLSTATE=42968
] {
  error: '[ibm_db] SQL_ERROR',
  sqlcode: -1598,
  state: '42968'
} undefined

解决方案

1. 切换到IBM i Access Client Solutions(ACS)免费驱动

ibm_db默认依赖的通用DB2 CLI驱动可能需要单独授权,但IBM官方提供的**IBM i Access Client Solutions(ACS)**包含免费的ODBC/CLI驱动,专门用于连接IBM i(AS400)系统,无需额外付费:

  • 安装ACS工具(从IBM官方渠道获取)
  • 找到ACS安装目录下的驱动文件:
    • Windows:db2cli.dll(通常在C:\Program Files\IBM\Client Access\ODBC\bin)
    • macOS/Linux:对应libdb2.so/libdb2.dylib
  • 在Electron项目中配置环境变量IBM_DB_HOME指向ACS的驱动目录,或直接将驱动文件复制到项目依赖的动态库路径中

2. 修改连接字符串指定ACS驱动

更新连接字符串,明确指定使用ACS的ODBC驱动:

const connStr = "DATABASE=mydb01;HOSTNAME=192.168.0.15;UID=xxx;PWD=xxx;PORT=446;PROTOCOL=TCPIP;DRIVER={IBM i Access ODBC Driver}";

3. 验证权限与兼容性

  • 确认连接使用的用户ID拥有DB2实例的连接权限(可联系DBA检查用户权限配置)
  • 确保ibm_db版本与Electron版本兼容,若存在版本不匹配问题,尝试重新安装并指定Electron版本:
    npm install ibm_db --build-from-source --target=你的Electron版本号
    

说明

出现SQL1598N错误的核心原因是ibm_db默认使用的通用DB2 CLI驱动需要授权,而IBM i系统自带的授权仅覆盖服务器端,客户端需使用专为IBM i设计的免费ACS驱动才能匹配授权策略。

内容的提问来源于stack exchange,提问作者OHICT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:50:23