Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux上从.NET内核连接到Informix_.net_Linux_.net Core_Informix - Fatal编程技术网

在Linux上从.NET内核连接到Informix

在Linux上从.NET内核连接到Informix,.net,linux,.net-core,informix,.net,Linux,.net Core,Informix,我们正试图找出一个好的策略,将.NET核心微服务连接到Informix数据库。.NET核心微服务正在RHEL Linux上运行 我们当前的实现使用OdbcConnection.NET核心类来尝试其连接。无论我尝试了什么,我也得到了同样的结果。它无法连接 下面是我们正在使用的连接字符串示例: Dsn=;Driver=/opt/HCL/informix/4.10/lib/cli/iclis09b.so;Host=redactedip;服务器=redactedserver;协议=olsoctcp;数据

我们正试图找出一个好的策略,将.NET核心微服务连接到Informix数据库。.NET核心微服务正在RHEL Linux上运行

我们当前的实现使用OdbcConnection.NET核心类来尝试其连接。无论我尝试了什么,我也得到了同样的结果。它无法连接

下面是我们正在使用的连接字符串示例:

Dsn=;Driver=/opt/HCL/informix/4.10/lib/cli/iclis09b.so;Host=redactedip;服务器=redactedserver;协议=olsoctcp;数据库=编辑;LogonID=已编辑;Uid=修订版;Pwd=修订版;Client_Locale=en_US.CP1252;Db_Locale=en_US.819

我尝试了一个odbc.ini文件,其中包含一个精心编制的DSN。这可以从命令行的isql开始工作,但在我们的.NET核心应用程序中不起作用。我们还使用了上述相同的设置在odbc.ini中设置DSN

我还尝试了许多不同的方式连接字符串。没有一个是有效的

您可以在没有odbc.ini的情况下连接到Linux上的Informix吗?只是使用一个连接字符串

是否有其他针对.NET Core的包/解决方案可能比原始ODBC连接更好、更健壮?我见过像IBM.Data.DB2.Core这样的包,它应该能够访问Informix。有人成功地使用过这个吗

即使是.NET核心应用程序的任何类型的Linux配置的源代码示例也会有所帮助


有什么想法吗?

好的,很高兴我找到了解决办法。正如JSAGERA提到的,UNICODE=UCS-2设置似乎非常重要。以下是一些被错误配置的东西,这些东西在我修复后确实有所帮助:

1权限-确保您对informix驱动程序目录具有适当的权限

2权限-确保您对odbcinst.ini具有适当的权限

3确保您在连接字符串或odbc.ini中引用的任何驱动程序在odbcinst.ini中存在匹配项

4您可以使用连接字符串,但仍必须为该UNICODE设置引用odbc.ini文件。我尝试了一些不同的方法来绕过它,方法是将它作为一个ENV变量或连接字符串本身包含在内。它似乎不起作用

5以下是我在连接字符串中使用的一些属性:Dsn=;驱动程序=Informix;Host=redactedIP;服务器=redactedsqlhost;协议=olsoctcp;数据库=编辑;Uid=修订版;Pwd=修订版;Client_Locale=en_US.CP1252;Db_Locale=en_US.819; 6我还必须为我的进程定义以下环境变量:INFORMIXDIR、INFORMIXSQLHOSTS、ODBCINI、LD_LIBRARY_PATH

祝你好运!我仍在研究unicode的解决方案,因此不必在odbc.ini文件中包含该项


更新:在对DB2.NET核心提供程序进行了额外的实验之后,我也能够连接到它。在我为informix启用DRDA协议之后。如果您正在寻找一种简单的方法来测试.NET核心提供程序,我建议您下载Informix Docker容器。它已经启用了DRDA,您可以通过localhost连接到实验。

Informix CSDK的下一个版本中将提供适用于Windows和Linux的.NET核心提供程序。同时,您应该能够使用System.Data.Odbc提供程序进行连接,只需确保在Odbc.INI中设置了“UNICODE=UCS-2”。我在我的Ubuntu盒上运行了一个快速测试,效果很好。如果使用最新的4.50 CSDK,效果会更好。@jsagera-那么您建议使用odbc.ini方法而不是连接字符串方法?您是否能够仅使用连接字符串成功连接?从CI/CD的角度来看,这是最干净的方法。如果你能给我一个连接字符串的例子,这将是非常有帮助的。到目前为止,我已经看到了很多例子,但似乎没有一个。下一个CSDK 4.50.FC4将有一个名为SQL\u INFX\u ATTR\u CALL\u的“新”SQLSetConnectAttr,它将自动设置UCS-2。它还将设置在Linux上正确使用.NET内核所需的其他选项。只需几点建议,在连接字符串中启用'needOdbcTypesOnly',并切换到驱动程序'iclit09b.so'的线程版本,它会工作得更好;