我完全没有使用 AS400 DB2 的经验,所以请原谅我在学习过程中出现的任何明显错误。我有 2 个可以连接到运行 v5r3 或 v4r3. 的盒子,我正在使用 NHibernate 3。但是,当我尝试连接时,我不断收到以下异常:-
ERROR [08001] [IBM] SQL30081N A communication error has been detected.
Communication protocol being used: "TCP/IP". Communication API being used: "SOCKETS".
Location where the error was detected: "192.168.1.11". Communication function detecting the error: "connect". Protocol specific error code(s): "10061", "*", "*". SQLSTATE=08001
下面是我的 NHibernate 配置文件:-
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.DB2400Dialect</property>
<property name="connection.driver_class">NHibernate.Driver.DB2Driver</property>
<property name="connection.connection_string">Server=192.168.1.11;Database=TESTDB;UID=XXX;PWD=XXX; </property>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
<property name="command_timeout">15000</property>
<property name="current_session_context_class">thread_static</property>
</session-factory>
</hibernate-configuration>
不知道是不是因为AS400版本太早?我的 nhibernate 配置不正确?或者我在 AS400 本身上设置不正确。
如有任何建议,我们将不胜感激。
提前致谢
最佳答案
IBM i 上有两种类型的数据库连接可用 - DRDA 和 DDM。 DRDA 用于 native 连接 (DB2.Net.iSeries),DDM 用于 DB/2 LUW(DB2.Net、DB/2 Connect)连接。
DRDA
验证正在运行的数据库主机服务器:
WRKACTJOB SBS(QSERVER) JOB(QZDASRVSD)
查看端口状态:
NETSTAT OPTION(*CNN)
,按 F2 并验证端口 449、8470、8471 和 8476 是否处于监听状态。
使用以下命令启动数据库主机服务器:
STRHOSTSVR SERVER(*DATABASE)
数据驱动
验证 ddm tcp 服务器正在运行:
WRKACTJOB SBS(QSYSWRK) JOB(QRWTLSTN)
查看端口状态:
NETSTAT *CNN,按 F2 并验证端口 446 是否处于状态 Listen。
使用以下命令启动 ddm tcp 服务器:
STRTCPSVR SERVER(*DDM)
在连接字符串中包含 ddm 端口号:
Server=192.168.1.11:446;Database=TESTDB;UID=XXX;PWD=XXX;
此 IBM 红皮书应提供更多信息:
Integrating DB2 Universal Database for iSeries with Microsoft ADO .NET
关于c# - 使用 C# 从 NHibernate 连接到 AS400 (iSeries) 时出现错误 RROR [08001] [IBM] SQL30081N,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11347692/