使用CLI和SSL连接到IBM DB2

时间:2019-10-23 15:20:06

标签: db2 odbc pyodbc

我在Rails应用程序中使用JDBC连接到iSeries的IBM DB2 AS400。现在看来我将不得不使用ibm_db gem。

https://github.com/ibmdb/ruby-ibmdb

我首先尝试使用irb进行此操作,并在以下命令中使用了以下命令:

require 'ibm_db'
conn=IBM_DB.connect("DATABASE=ABCUATDT;hostname=TEST.HERE.COM;PORT=9471;SECURITY=SSL;PROTOCOL=TCPIP;AUTHENTICATION=SERVER;UID=username;PWD=abc1234;", "", "")

这给了我以下错误:

  

SQL30081N已检测到通信错误。通讯   使用的协议:\“ SSL \”。使用的通信API:   \“袜子\”。检测到错误的位置:\“ \”。   通信功能检测到错误:\“ sqlccSSLSocketSetup \”。   协议特定的错误代码:\“ 414 \”

然后我尝试不使用SSL:

conn=IBM_DB.connect("DATABASE=ABCUATDT;hostname=TEST.HERE.COM;PORT=446;PROTOCOL=TCPIP;AUTHENTICATION=SERVER;UID=username;PWD=abc1234;", "", "")
  

SQL30082N安全处理失败,原因为\“ 15 \”(\“处理中   FAILURE \“)。SQLSTATE = 08001 SQLCODE = -30082”

这些端口和用户名/ pw等都可以在JDBC上正常工作,但不能使用ibm_db gem。

编辑:我尝试使用其他端口,我知道8471对非SSL是开放的,而9471对SSL是开放的。我决定完全跳过SSL,并开始在Mac OSX上使用db2cli。

db2cli execsql -connstring "database=ABCUATDT;hostname=TEST.HERE.COM;port=8471;uid=username;pwd=abcd1234"

这只是挂起,没有提示我编写SQL:

  

IBM DATABASE 2交互式CLI示例程序(C)版权   国际商用机器公司1993,1996版权所有   许可材料-IBM美国政府用户的财产受到限制   权利-使用,复制或披露受到GSA ADP时间表的限制   与IBM Corp.签订合同。

然后我尝试了python库和DB2 CLI-两者都给出了相同的错误。在DB2方面是否需要更改?

为什么它适用于JDBC但不适用于IBM ODBC驱动程序?

1 个答案:

答案 0 :(得分:0)

与您的i管理员或管理团队联系。 Stackoverflow可能现在不是您所需要的。提出问题时,出于明显的原因全面详细地是很明智的,如果有必要,可以与客户现场的相关人员交谈以在提出问题之前确定事实。

找出i系列上是否已经安装了Db2连接服务器(单独购买)。然后,用于MAC的常规Db2客户端可以通过该产品与CLI / ODBC 通信,该产品在充当网关的同时进行了必需的协议转换。

查找是否已经在Windows / Linux / Unix上运行的任何位置部署了Db2连接服务器,一旦为i系列配置了连接,便可以使用该服务器(充当网关时进行必需的协议转换)。然后,MAC OS X的常规Db2客户端可以将其用作CLI / ODBC到i系列的网关。

IBM当前不为MAC OS X afaik销售“ IBM i访问”,该软件提供CLI / ODBC接口,并且不需要Db2连接服务器。该产品可用于Microsoft Windows和Linux平台。如果当前不支持MAC OS X,这些平台可能会为您提供替代选择。

IBM用于MAC OS X的常规Db2驱动程序要求CLI / ODBC使用Db2连接服务器进行i系列的协议转换,因此,如果没有Db2连接网关,db2cli工具将无法工作。

其他非IBM供应商可能会在此领域提供解决方案。

另一种可能性是使用在Mac OS X上运行的ODBC到JDBC桥,这会将ODBC调用重新路由到工作的jdbc驱动程序。您可能会对此进行研究。

相关问题