在 Linux 上从 .NET Core 连接到 Informix
Connecting from .NET Core to Informix on Linux
我们正在尝试找出一个好的策略来将 .NET Core Microservice
连接到 Informix 数据库。 .NET Core Microservice
在 RHEL Linux 上是 运行。
我们当前的实现使用 OdbcConnection
.NET Core class 来尝试连接。无论我尝试过什么,我都会得到相同的结果。无法连接。
这是我们使用的示例连接字符串:
Dsn=;Driver=/opt/HCL/informix/4.10/lib/cli/iclis09b.so;Host=redactedip;Server=redactedserver;Protocol=olsoctcp;Database=redacted;LogonID=redacted;Uid=redacted;Pwd=redacted;Client_Locale=en_US.CP1252;Db_Locale=en_US.819;
我尝试了一个 odbc.ini
文件,其中包含一个 DSN。这适用于命令行的 isql,但不适用于我们的 .NET Core 应用程序。 (我们也使用上面的这些相同设置在 odbc.ini 中设置 DSN)
我也尝试过多种不同方式的连接字符串。 None 有效。
您可以在没有 odbc.ini 的情况下连接到 Linux 上的 Informix 吗? (只使用连接字符串?)
.NET Core 是否还有其他 packages/solutions 可能比原始 ODBC 连接更好、更健壮?我见过像 IBM.Data.DB2.Core
这样的包,它应该能够访问 Informix。有人成功使用过吗?
即使是 .NET Core 应用程序的任何类型的工作 Linux 配置的源代码示例也会有所帮助...
有什么想法吗?
好的,很高兴地说我找到了解决方案。正如 jsagrera 提到的 UNICODE=UCS-2 设置似乎非常重要。以下是一些配置错误的东西,一旦我修复它们真的很有帮助:
1) 权限 - 确保您对 informix 驱动程序目录具有适当的权限。
2) 权限 - 确保您对 odbcinst.ini
具有适当的权限
3) 确保您在连接字符串中引用的任何驱动程序或 odbc.ini 在 odbcinst.ini
中作为匹配项存在
4) 您可以使用连接字符串,但仍然必须为该 UNICODE 设置引用 odbc.ini 文件。我尝试了一些不同的方法来解决这个问题,方法是将其作为 ENV 变量或连接字符串本身包含在内。好像不行。
5) 以下是我在连接字符串中使用的一些属性:Dsn=;Driver=Informix;Host=redactedIP;Server=redactedsqlhost;Protocol=olsoctcp;Database=redacted;Uid=redacted;Pwd=redacted; Client_Locale=en_US.CP1252;Db_Locale=en_US.819;
6) 我还必须为我的进程定义以下环境变量:INFORMIXDIR、INFORMIXSQLHOSTS、ODBCINI、LD_LIBRARY_PATH
祝你好运!我仍在研究 unicode 的解决方案,因此我不必将条目包含在我的 odbc.ini 文件中。
更新:在对 DB2 .NET Core Provider 进行额外实验后,我也能够连接到它。 (在我为 informix 启用 DRDA 协议之后)。如果您正在寻找一种简单的方法来测试 .NET Core Provider,我建议您下载 Informix Docker Container。它已经启用了 DRDA,您可以通过本地主机连接进行实验。
我们正在尝试找出一个好的策略来将 .NET Core Microservice
连接到 Informix 数据库。 .NET Core Microservice
在 RHEL Linux 上是 运行。
我们当前的实现使用 OdbcConnection
.NET Core class 来尝试连接。无论我尝试过什么,我都会得到相同的结果。无法连接。
这是我们使用的示例连接字符串:
Dsn=;Driver=/opt/HCL/informix/4.10/lib/cli/iclis09b.so;Host=redactedip;Server=redactedserver;Protocol=olsoctcp;Database=redacted;LogonID=redacted;Uid=redacted;Pwd=redacted;Client_Locale=en_US.CP1252;Db_Locale=en_US.819;
我尝试了一个 odbc.ini
文件,其中包含一个 DSN。这适用于命令行的 isql,但不适用于我们的 .NET Core 应用程序。 (我们也使用上面的这些相同设置在 odbc.ini 中设置 DSN)
我也尝试过多种不同方式的连接字符串。 None 有效。
您可以在没有 odbc.ini 的情况下连接到 Linux 上的 Informix 吗? (只使用连接字符串?)
.NET Core 是否还有其他 packages/solutions 可能比原始 ODBC 连接更好、更健壮?我见过像 IBM.Data.DB2.Core
这样的包,它应该能够访问 Informix。有人成功使用过吗?
即使是 .NET Core 应用程序的任何类型的工作 Linux 配置的源代码示例也会有所帮助...
有什么想法吗?
好的,很高兴地说我找到了解决方案。正如 jsagrera 提到的 UNICODE=UCS-2 设置似乎非常重要。以下是一些配置错误的东西,一旦我修复它们真的很有帮助:
1) 权限 - 确保您对 informix 驱动程序目录具有适当的权限。
2) 权限 - 确保您对 odbcinst.ini
具有适当的权限3) 确保您在连接字符串中引用的任何驱动程序或 odbc.ini 在 odbcinst.ini
中作为匹配项存在4) 您可以使用连接字符串,但仍然必须为该 UNICODE 设置引用 odbc.ini 文件。我尝试了一些不同的方法来解决这个问题,方法是将其作为 ENV 变量或连接字符串本身包含在内。好像不行。
5) 以下是我在连接字符串中使用的一些属性:Dsn=;Driver=Informix;Host=redactedIP;Server=redactedsqlhost;Protocol=olsoctcp;Database=redacted;Uid=redacted;Pwd=redacted; Client_Locale=en_US.CP1252;Db_Locale=en_US.819; 6) 我还必须为我的进程定义以下环境变量:INFORMIXDIR、INFORMIXSQLHOSTS、ODBCINI、LD_LIBRARY_PATH
祝你好运!我仍在研究 unicode 的解决方案,因此我不必将条目包含在我的 odbc.ini 文件中。
更新:在对 DB2 .NET Core Provider 进行额外实验后,我也能够连接到它。 (在我为 informix 启用 DRDA 协议之后)。如果您正在寻找一种简单的方法来测试 .NET Core Provider,我建议您下载 Informix Docker Container。它已经启用了 DRDA,您可以通过本地主机连接进行实验。