使用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
- Windows:
- 在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
相关产品推荐
相关产品推荐

