【发布时间】:2018-01-27 12:54:52
【问题描述】:
我有DB2的JDBC连接,如何识别是Z/OS390还是AS400还是UDB连接。
是否有任何模式可以说明 DB2 的类型?
【问题讨论】:
-
目前,我不认为有一个众所周知的 SQL 用于此。 IBM 应该真正解决这个问题。每个平台都有自己独特的非便携式方法来确定版本/实例级信息。您可能会使用启发式方法。 Db2 for Z 可能有一个 sysibm.locations 表(在其他两个平台中不存在)。 i 系列将具有 QSYS2.TABLES(在其他两个平台中不存在)。 LUW 将有 TABLE (sysproc.env_get_inst_info())
-
对于 ZOS,除了 sysibm.locations 表之外,还有其他方法可以找到吗?对于 UDB,我使用的是“SELECT TABNAME FROM SYSCAT.TABLES WHERE 1>9”,这是正确的吗?
-
如果您乐于使用 java 方法(与仅 SQL 不同),那么 mustaccio 的答案就足够了,因为返回的产品名称由 Db2 设置为 SQL* 之一(对于 Linux/Unix /Windows),DSN* 用于 Z/OS,QSQ* 用于 i 系列,ARI* 用于 vse/vm。这似乎回答了你的问题。对于非 Java 语言,此信息也在类型 1 连接的 SQLCA.SQLERRP 中,也可通过 GET DIAGNOSTICS....DB2_PRODUCT_ID 在例程中访问。