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

标签 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

下面是我的 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 上有两种类型的数据库连接可用 - DRDADDMDRDA 用于 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/

相关文章:

c# - Fluent NHibernate View 映射需要 Id 列

c# - 类似Windows 8开始菜单的图像鼠标点击效果

c# - IIS6、ASP.NET MVC 1 和随机减速

php - Mysql Group_concat 又在哪里 group concat 我该如何管理

c - Unix/C 中的数据库独立性

silverlight - RIA 服务和 nHibernate 插入新问题

.net - NHibernate SchemaExport 和 Configure() catch-22

c# - 如何知道外部应用程序是否已关闭?

c# - 回避异常和 "a function evaluation has timed out"

c# - 将 DataTable 批量复制到 MySQL(类似于 System.Data.SqlClient.SqlBulkCopy)