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

Posted

技术标签:

【中文标题】Informix 连接字符串字段描述和要使用的值【英文标题】:Informix connection string field descriptions and values to be used 【发布时间】:2019-03-20 07:50:29 【问题描述】:

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

到目前为止,我所做的是,我在我的机器上安装了Informix client sdk v4.10。之后我写了一段引用here和here的代码。在我的代码中,我引用了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 信息!。

如果有人可以帮助我,那将非常有帮助。

【问题讨论】:

4js.com/online_documentation/fjs-fgl-3.00.02-manual-html/… 【参考方案1】:

这是一个非常非常难以盲目回答的问题。 :-)

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

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

cat $INFORMIXDIR/etc/sqlhosts

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

TYPE %INFORMIXDIR%\etc\sqlhosts

这应该为您提供一个包含大量信息的文件,您正在寻找不是 cmets 并且至少有 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 查询它们,但您可能无法(而且真的不应该!!)INSERT , UPDATE 或 DELETE 或使用 DDL。

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

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

【讨论】:

以上是关于Informix 连接字符串字段描述和要使用的值的主要内容,如果未能解决你的问题,请参考以下文章

将字段值连接到 SQL Server 中的字符串

使用pyspark将两个字符串列值连接到整数数组

如何在 Informix 中打开和读取文件

Informix:日期时间操作

Informix for .NET 的连接字符串

XSLT:如何将值连接到全局变量