如何让SQL环境改用指定作业的当前*LIBL?ACS中CHGLIBL失效排查
解决ACS Run SQL Scripts中*LIBL不生效的问题
核心原因
ACS的Run SQL Scripts(RSS)启动时会缓存作业的*LIBL和CURRENT SCHEMA设置,后续通过QCMDEXC执行CHGLIBL仅修改了作业层面的库列表,但SQL会话不会自动刷新缓存,导致查询仍使用初始的CURRENT SCHEMA(TESTUSER),触发SQLCODE -204(对象不存在)错误。
具体解决方法
临时生效:重置SQL会话+修改库列表
先通过CL命令调整作业库列表,再重置SQL会话让设置生效:CALL QCMDEXC('CHGLIBL LIBL(DATALIB *USRLIBL) CURLIB(DATALIB)'); CALL QSYS2.RESET_SQL_SESSION();执行后,SQL查询会优先从当前作业的*LIBL中查找对象。
永久生效:修改RSS默认连接设置
- 打开RSS,点击菜单栏
File > Properties; - 在Connection标签页,将
Current schema改为*LIBL或直接指定DATALIB; - 在SQL标签页,确保
Path包含*LIBL(推荐路径:*LIBL, QSYS, QSYS2, SYSIBM, SYSIBMADM); - 保存设置,后续启动RSS会自动使用指定的schema或*LIBL。
- 打开RSS,点击菜单栏
直接修改QZDASOINIT作业的库列表
如果需要让整个QZDASOINIT作业的*LIBL永久生效,执行以下CL命令(替换nnnnnn为实际作业号):CHGJOB JOB(nnnnnn/QUSER/QZDASOINIT) LIBL(DATALIB *USRLIBL) CURLIB(DATALIB)修改后重启RSS连接,SQL会话会继承作业的新库列表。
临时切换CURRENT PATH
若不想重置会话,可直接设置SQL的当前路径优先使用*LIBL:SET CURRENT PATH = *LIBL, QSYS, QSYS2, SYSIBM, SYSIBMADM;
内容的提问来源于stack exchange,提问作者ojay
相关产品推荐
相关产品推荐

