開發機通過 ODBC/OLEDB 直連本地 Informix 正常,但部署到用戶機器需遠程訪問 10.4.129.1 服務器,報錯「找不到服務器」或「連接超時」。
SetNet32、ODBC 驅動)SetNet32 添加遠程服務器條目ilogin 命令行參考權威庫:connectionstrings.com/informix
// 方案 A:使用系統 DSN(推薦,避免密碼明文)
"DSN=InformixDSN;UID=myUser;PWD=myPass;"
// 方案 B:無 DSN 直連(需客戶端已配置 SetNet32)
"Server=myServerName;Database=myDb;Host=10.4.129.1;Service=1526;Protocol=onsoctcp;UID=myUser;PWD=myPass;"
// 方案 C:OLEDB Provider
"Provider=Ifxoledbc.2;Data Source=myServerName;User ID=myUser;Password=myPass;"
| 欄位 | 說明 | 示例 |
|---|---|---|
| IBM Informix Server | 服務器別名,客戶端引用此名 | ol_informix1210 |
| Host Name | 服務器 IP 或主機名 | 10.4.129.1 |
| Service Name | 端口號或服務名(需與 onconfig 中 DBSERVERNAME 一致) | 1526 / sqlexec |
| Protocol | onsoctcp (TCP)、onipcshm (共享內存) | onsoctcp |
| Options | 客戶端參數,如 csm=(GSSCSM) 加密 | 留空即可 |
1526/tcp(或自定義端口)x64 需安裝 64 位 Client SDK,Any CPU 勾選 "Prefer 32-bit" 則用 32 位驅動INFORMIXDIR、INFORMIXSERVER、PATH 需包含 bin 目錄$INFORMIXDIR/etc/hosts.equiv 或 .rhosts 配置信任主機using (var conn = new OdbcConnection(connStr)) {
conn.Open();
using (var cmd = conn.CreateCommand()) {
cmd.CommandText = "SELECT FIRST 10 * FROM my_table";
using (var reader = cmd.ExecuteReader()) {
while (reader.Read()) Console.WriteLine(reader[0]);
}
}
}
遠程連 Informix 核心在「客戶端配置」,而非代碼。先搞定 SetNet32 + 系統 DSN 測試通,再寫 C# 連接字符串,就能從「跪求」變「輕鬆搞定」。