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

求IBM DB2/iSeries对应Oracle SYS.GLOBAL_NAME、MS-SQL sys.databases的查询语句

获取IBM DB2 for iSeries(IBM i)的库/数据库列表

嘿,刚好我对DB2 for iSeries(也就是咱们常说的IBM i平台上的DB2)的系统视图比较熟悉,你的需求完全可行——不过得先明确一点:IBM i里的**「库(Library)」**其实和MSSQL里的「数据库」概念更对应,而DB2 for LUW(Linux/Unix/Windows)的数据库逻辑和它不一样。下面给你两种常用的查询方式,适配不同版本的IBM i:

方式1:使用现代系统视图(IBM i 7.2及以上推荐)

QSYS2.LIBRARY_INFO是IBM在较新版本中提供的视图,包含了库的详细信息,用它查询用户库很直观:

SELECT LIBRARY_NAME 
FROM QSYS2.LIBRARY_INFO 
WHERE LIBRARY_TYPE = 'PROD' -- 仅返回生产类库,若要所有类型可去掉此条件
  AND LIBRARY_NAME NOT IN ('QSYS', 'QSYS2', 'SYSTEM', 'SYSIBM', 'SYSIBMADM', 'SYSPROC') -- 排除系统核心库

方式2:兼容旧版本(IBM i 7.1及以下)

如果你的程序需要适配更早版本的IBM i,可以使用传统的SYSIBM.SYSLIBRARIES视图:

SELECT NAME 
FROM SYSIBM.SYSLIBRARIES 
WHERE TYPE = 'L' -- 指定类型为库
  AND NAME NOT IN ('QSYS', 'QSYS2', 'SYSTEM', 'SYSIBM', 'SYSIBMADM', 'SYSPROC')

额外说明

  • 如果你需要筛选当前用户有权限访问的库,可以结合QSYS2.OBJECT_AUTHORIZATION视图添加权限过滤条件,比如:
    SELECT LI.LIBRARY_NAME
    FROM QSYS2.LIBRARY_INFO LI
    JOIN QSYS2.OBJECT_AUTHORIZATION OA 
      ON LI.LIBRARY_NAME = OA.OBJECT_NAME 
     AND OA.OBJECT_TYPE = '*LIB'
     AND OA.AUTHORIZATION_NAME = CURRENT_USER
     AND OA.AUTHORITY LIKE '%R%' -- 至少有读取权限
    WHERE LI.LIBRARY_TYPE = 'PROD'
      AND LI.LIBRARY_NAME NOT IN ('QSYS', 'QSYS2', 'SYSTEM', 'SYSIBM', 'SYSIBMADM', 'SYSPROC')
    
  • 和Oracle的SYS.global_name不同,IBM i通常是单数据库实例,所有业务数据都以「库」的形式组织,所以你要的“数据库列表”实际上就是这些用户库的列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 12:22:54