.net can';t使用drda连接到另一台机器上的informix,尽管主机说它';他在听左舷广播

.net can';t使用drda连接到另一台机器上的informix,尽管主机说它';他在听左舷广播,.net,linux,informix,.net,Linux,Informix,我在使用informix的通用.net驱动程序连接到另一台机器上的informix服务器时遇到问题。当我运行testconn40_32时,它失败并出现错误08001。奇怪的是主机说它正在侦听指定的端口 主机中的sqlhosts文件有一行指定drda连接,如下所示: dr_informix1210 drsoctcp localhost dr_informix1210 dr_informix1210 9089/tcp 127.0.0.1 localhost 我还在主机的oncon

我在使用informix的通用.net驱动程序连接到另一台机器上的informix服务器时遇到问题。当我运行testconn40_32时,它失败并出现错误08001。奇怪的是主机说它正在侦听指定的端口

主机中的sqlhosts文件有一行指定drda连接,如下所示:

dr_informix1210 drsoctcp localhost dr_informix1210
dr_informix1210    9089/tcp
127.0.0.1     localhost
我还在主机的onconfig文件中为该主机指定了一个dbserveralias名称:
dbserveralias dr_informix1210,lo_informix1210

我还设置了所有环境变量,包括PATH、INFORMIXDIR、INFORMIXSERVER、ONCONFIG和INFORMIXSQLHOSTS

“我的服务”文件中有一行用于该服务,如下所示:

dr_informix1210 drsoctcp localhost dr_informix1210
dr_informix1210    9089/tcp
127.0.0.1     localhost
我添加了一条规则,允许在该端口上连接到防火墙

/etc/hosts中的“我的主机”文件还列出了如下服务器:

dr_informix1210 drsoctcp localhost dr_informix1210
dr_informix1210    9089/tcp
127.0.0.1     localhost
我的连接字符串如下:
Database=sigac_historico;服务器=(ip地址:端口);UserID=(UserID);密码=(密码)

所以我想知道我是否错过了任何一步。我知道这个错误意味着由于主机拒绝连接,drda无法启用。 主机运行Ubuntu,我的程序是在.NET中制作的,从windows运行

我还想提到,如果我对该服务器执行telnet,它会抛出一个错误,表示无法打开连接

还有一个问题:我看到IBM有一个不同的产品叫DB2,这是唯一支持ADO.NET的产品吗?目前我正在尝试连接到Informix服务器


谢谢。

为了补充Pradeep所说的内容,您还可以将“*hostname”放在SQLHOSTS文件(服务器端)的第三列中,这样它将生成监听器和所有网络接口(real if、localhost等)

关于客户机,是的,IBM有一个重要的思想调用DB2(我会尽量避免吗;)

要从.Net连接Informix数据库,您有两个选项: 1.连接到DRDA的IBM数据服务器客户端(即您当前拥有的客户端)具有别名 2.Informix.Net提供程序(包含在“Informix CSDK”中)

后者是“native/classic”.Net提供程序,使用标准SQLI协议(与所有Informix客户端类似),支持比DRDA更多的Informix功能,但目前缺少一些“新的”.Net功能(如EF/Entity模型)


看一看,它用一些很好的示例解释了这两个提供程序的使用方法。

如果您的服务器
sqlhosts
文件被配置为仅侦听
localhost
,那么informix intance将不接受来自其他服务器的连接。正如上面提到的@Luís,尝试用主机外部网络接口IP地址替换本地主机。如果您的客户端应用程序(testconn40_32)也在同一台主机上运行,则可能是另一个问题。Informix确实支持ADO.NET,它应该可以工作。@PradeepNatarajan我确实会尝试一下,我的客户端应用程序正在另一台机器上运行,所以希望这就是我想要的答案。