经过大约 3 天的尝试,我无法创建从 SQL Server 2016 到 Informix 11.5 的链接服务器。因为我想先在测试环境中建立连接,所以我没有尝试过其他版本(2008R2 等)。
我做了什么
- 在 SQL Server 主机上安装了最新的 Informix OLE DB 驱动程序
- 为 IBM Informix ODBC 驱动程序设置配置了系统 DSN
- 更改区域设置后测试 DSN 设置的连接性(测试良好),使客户端和服务器匹配,服务器正确。
- 尝试通过以下两种方式创建链接服务器。
- 谷歌搜索并阅读了我能解决的所有问题,但没有成功。
1) 将 IBM Informix指令与 OLE DB 提供程序一起使用,我收到以下错误(无论我是否在提供程序字符串中使用 DNS):
无法为链接服务器“UCCX”初始化 OLE DB 提供程序“Ifxoledbc”的数据源对象。链接服务器“UCCX”的 OLE DB 提供程序“Ifxoledbc”返回了消息“EIX000: (-23197)”数据库区域设置信息不匹配”(Microsoft SQL Server,错误:7303)
数据库区域设置为 en_US.57372
2) 使用 Microsoft OLE DB Provider for SQL Server ,如本博客所述,返回错误:
命名管道提供程序:无法打开与 SQL Server 的连接。用于链接服务器 UCCX 的 OLE DB 提供程序 SQLNCLI11 返回消息“登录超时已过期” 用于链接服务器 UCCX 的 OLE DB 提供程序 SQLNCLI11 返回消息“在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。找不到服务器或不可访问。检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。链接服务器 UCCX 的 SQLNCLI11 返回消息“无效的连接字符串属性”
我对 Informix 的经验非常少,这应该是显而易见的,而且这不是本地安装,它是 Cisco 实例,您可能从我使用的博客中收集到。任何意见,将不胜感激。
我们做了一个类似设置的噩梦,特别是连接到多个 Informix 环境的问题。我有几个 Informix 实例需要链接到单个 SQL Server 实例以用于仓储目的,我们的常驻 SME 告诉我这是不可能的;每个服务器只能引用一个 Informix 实例。
我会一直收到和你一样的错误,而且我在网上查到的任何东西都没有被证明是有帮助的。
最终,解决方案有几个部分,您已经完成了前几个部分:
IBM Informix ODBC Driver
必须安装在数据库服务器上。链接服务器设置的技巧是使用以下内容(代码块中的项目是文字):
Microsoft OLE DB Provider for ODBC Drivers
Ifxoledbc
{IBM INFORMIX ODBC DRIVER}
如果您更像是手动 SQL 类型的人,请参见下文。提供者字符串被拉入变量仅用于内联注释目的,同时仍然具有可执行代码。根据需要修改:
由于您正在处理单个实例,因此只需匹配用于创建系统 DSN 的值就足够了。如果您需要为其他实例添加额外的链接服务器,可以按照与上述完全相同的格式来完成,而无需额外的 DSN 条目。
我希望这会有所帮助。