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 连接字符串字段描述和要使用的值的主要内容,如果未能解决你的问题,请参考以下文章