Informix连接字符串字段描述和要使用的值

时间:2019-03-20 07:50:30

标签: c# .net odbc informix

我正在使用.netc#中编写一个测试应用程序,以连接到IBM的Informix数据库。

到目前为止,我所做的是,我在自己的计算机上安装了Informix client sdk v4.10。之后,我写了一段代码,引用了herehere。在我的代码中,我引用了IBM.Data.Informix.dll,该引用是从Informix client sdk's bin文件夹netf40的安装路径引用的。

运行测试应用程序时,尝试打开连接时遇到错误,

  

错误[HY000] [Informix .NET提供程序] [Informix]发生系统错误   在网络功能中。

我认为此错误是由于未正确提供连接字符串字段引起的,我引用了https://www.connectionstrings.com/informix/,并尝试使用上述链接中提到的informix with ODBC driver and informix .net provider之类的连接字符串,但是没有用,我也很难了解从何处获取每个连接字符串字段(例如protocol, port, host-name , server-name and service name.

)的值

要查找上述字段的值,很遗憾,我尝试在HKEY_LOCAL_MACHINE\SOFTWARE\INFORMIX\下的注册表项中查找SQLHOSTS项!并且还尝试从客户端sdk的bin文件夹中运行setnet32.exe,我只能在屏幕下方看到protocol信息!

enter image description here

如果有人可以帮助我,那将真的很有帮助。

1 个答案:

答案 0 :(得分:1)

这是一个非常非常困难的问题,无法盲目回答。 :-)

setnet32.exe将不知道您要查找的信息,您需要将此信息提供给setnet32.exe。

第一个要问的问题是:您的数据库是否在Unix或Linux上运行?如果是这样,则以“ informix”用户身份登录数据库服务器并运行命令

cat $INFORMIXDIR/etc/sqlhosts

如果您使用的是Windows,则登录Windows服务器并在命令提示符下运行

TYPE %INFORMIXDIR%\etc\sqlhosts

这应该会为您提供一个可能包含大量信息的文件,您正在查找的行不是注释,并且至少有4列。这是我正在测试的Docker上的sqlhosts文件:

$ cat $INFORMIXDIR/etc/sqlhosts
############################################################
### DO NOT MODIFY THIS COMMENT SECTION
### HOST NAME = 7edf3045c382
############################################################
informix        onsoctcp        7edf3045c382         9088
informix_dr     drsoctcp        7edf3045c382         9089

最后两行是文件的内容。

  • 第1列是INFORMIXSERVER的名称或别名(setnet32.exe中的IBM Informix Server)
  • 第2列是协议名称(setnet32.exe中的协议名称)
  • 第3列是主机名(setnet32.exe中的HostName)
  • 第4列是端口号或名称(setnet32.exe中的服务名称)

如果第4列是名称,并且您使用的是Unix或Linux,请在Unix或Linux服务器上的/ etc / services中搜索端口名称。如果您使用的是Windows,则它将位于%windir%\ system32 \ drivers \ etc \ services(或类似文件)中。

一旦有了,就可以运行命令

dbaccess

选择“数据库”选项,然后是“选择”选项。这应该为您显示一个数据库列表,大致类似于:

SELECT DATABASE >>
Select a database with the Arrow Keys, or enter a name, then press Return.

------------------------------------------------ Press CTRL-W for Help --------

 backbone@informix   wallet@informix

 cust@informix

 retail@informix

 sports@informix

 sysadmin@informix

 sysha@informix

 sysmaster@informix

 sysuser@informix

 sysutils@informix

通常,名为“ sys”的数据库是为Informix管理保留的,并且可能不是实际的数据库,尽管您可以使用SELECT查询它们,但是您可能将(实际上不应!)插入。 ,UPDATE或DELETE或使用DDL。

在上面的数据库列表中,所有sys *数据库都是Informix管理“数据库”。在我的示例中,数据库名称以“ databasename @ informixservername”格式显示。

您现在应该拥有访问数据库所需的所有信息。