我正在构建一个从旧的 AS400 数据库服务器获取数据的 Web 服务。
我正在尝试使用 nodejs 进行连接https://github.com/ibmdb/node-ibm_db我在大多数数据库上都遇到了这个错误。
SQL30061N 在远程节点上找不到数据库别名或数据库名称“此处的数据库名称”。SQLSTATE=08004
除一条内容外:由于缺少 DB2 Connect 产品,尝试连接主机失败
(这或多或少是意料之中的)
我注意到最后一个是*本地数据库,其余的有其他远程名称。 我还注意到这里说我只能连接到*本地数据库,但它没有解释为什么http://www-03.ibm.com/systems/resources/systems_i_software_db2_pdf_db2connect.pdf
我真的很困惑,所有这些数据库都是“本地的”,因为它们都托管在同一台物理机器上。*local 在远程位置是什么意思,为什么如果它们不是*local的,我就无法连接到其他数据库?
答案1
只要系统名称位于 AS400 上的主机表中,您就可以以交互方式连接到远程数据库。如果您发出交互式 SQL 会话命令 CONNECT TO system_name,它应该连接到该系统,前提是您的配置文件存在于另一端,并且任何后续查询都会查看该机器上的表。但是,一台物理 AS400 机器可以有许多分区或 LPAR。这意味着,为了连接到这些数据库,您必须首先连接到特定的 LPAR(在您的例子中,第二列提供这些值)。我不知道有什么方法可以在后台连接到单个系统,然后连接到其他系统及其数据库,您可能也不想以这种方式混淆连接。所以,我会获取列出的其他系统的凭据。如果它们碰巧引用相同的实际 AS400 分区(这种情况极不可能),那么您遇到的问题就不仅仅是 DB 连接了。