使用C#从NHibernate连接到AS400(iSeries)时出现错误RROR [08] [IBM] SQL30081N

los*_*wpf 3 c# database nhibernate ibm-midrange

我完全没有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
Run Code Online (Sandbox Code Playgroud)

下面是我的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>
Run Code Online (Sandbox Code Playgroud)

我不确定这是不是因为AS400的版本太早了?我的nhibernate配置不正确?或者我在AS400上设置了错误的东西.

任何建议都将非常感激.

提前谢谢了

jam*_*man 5

IBM i上有两种类型的数据库连接 - DRDADDM. DRDA用于本机连接(DB2.Net.iSeries),DDM用于DB/2 LUW(DB2.Net,DB/2 Connect)连接.

DRDA

验证运行的数据库主机服务器:

WRKACTJOB SBS(QSERVER) JOB(QZDASRVSD)
Run Code Online (Sandbox Code Playgroud)

检查端口状态:

NETSTAT OPTION(*CNN),点击F2并验证端口449,8470,8471和8476处于状态Listen.

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

STRHOSTSVR SERVER(*DATABASE)
Run Code Online (Sandbox Code Playgroud)

DDM

验证ddm tcp服务器是否正在运行:

WRKACTJOB SBS(QSYSWRK) JOB(QRWTLSTN)
Run Code Online (Sandbox Code Playgroud)

检查端口状态:

NETSTAT*CNN,命中F2并验证端口446处于侦听状态.

使用以下命令启动ddm tcp服务器:

STRTCPSVR SERVER(*DDM)
Run Code Online (Sandbox Code Playgroud)

在连接字符串中包含ddm端口号:

Server=192.168.1.11:446;Database=TESTDB;UID=XXX;PWD=XXX;
Run Code Online (Sandbox Code Playgroud)

这本IBM红皮书应该提供更多信息:

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