3

我完全没有使用 AS400 DB2 的经验,所以请原谅我在学习过程中出现的任何明显错误。我有 2 个可以连接到运行v5r3v4r3 的盒子。 我正在使用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的版本太早了?我的休眠配置不正确?或者我在 AS400 本身上设置不正确。

任何建议将不胜感激。

提前谢谢了

4

2 回答 2

5

IBM i- DRDADDM上有两种类型的数据库连接可用。 DRDA用于本机连接(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 处于Listen状态。

使用以下命令启动数据库主机服务器:

STRHOSTSVR SERVER(*DATABASE)

DDM

验证 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 红皮书应提供更多信息:

将 DB2 Universal Database for iSeries 与 Microsoft ADO .NET 集成

于 2012-07-05T15:42:50.783 回答
2

真正的潜在错误是这个:

TCP错误代码10061:无法建立连接,因为目标机器主动拒绝它

所以显然端点没有监听,或者有一些防火墙阻止了你,或者你弄错了地址。如果在 as/400 中配置某些东西以启用该 TCP 地址来侦听连接,则可能未正确启用。

于 2012-07-05T15:39:14.567 回答