我已经在我的开发笔记本电脑上安装了IBM Informix Dynamic Server 11.50的试用版,用于我正在编写的ASP.NET 2.0应用程序。我创建了几个数据库并用示例数据填充它们但我无法连接。这是代码的相关部分:
Dim facStr As String = System.Configuration.ConfigurationManager.ConnectionStrings("fact").ConnectionString
conn.ConnectionString = facStr
Try
conn.Open()
Catch ex As Exception
例外是:
[Informix .NET提供程序] [Informix]服务器ol_srv_custom未在sqlhosts中列为dbserver名称。
sqlhosts文件的完整路径是:
C:\ Archivos de programa \ IBM \ Informix \ Client-SDK \ etc \ sqlhosts
Informix的环境变量:
INFORMIXSQLHOSTS = C:\ Archivos de programa \ IBM \ Informix \ Client-SDK \ etc \ sqlhosts
sqlhosts文件的内容:
ol_srv_custom olsoctcp * nb-desarrollo svc_custom
连接字符串:
**主机= * NB-DESARROLLO;服务= svc_custom;服务器= ol_srv_custom;数据库=事实;用户ID = informix;密码= **********
有什么想法吗?
ODBC也不起作用。当我尝试创建DSN时,驱动程序用户界面要求我从组合框中选择“服务器名称”,但它是空的。事实上,我必须连接到这个Informix安装的唯一方法是使用控制台实用程序dbaccess,这就是我创建测试数据库和插入示例数据的方式。我不确定这个问题是否仍然属于SO,也许ServerFault可能是更合适的地方,但我不知道如何移动它。
答案 0 :(得分:2)
我还建议你创建ODBC连接并测试它。有关如何使用setnet32(旧版本)的信息:http://www.synametrics.com/ifmxODBC.htm
答案 1 :(得分:0)
Internet中的文档和错误消息具有误导性。 我有同样的错误,与此同时我找到了解决方法。
在安装Windows的Informix Client SDK并将ODBC驱动程序用于Informix(带有或不带有.NET)时,必须传递以下参数:
所有这些参数都是强制。该数据库是可选的。
您的连接字符串中缺少协议。如果缺少任何参数,则OBDC驱动程序在
下的注册表中搜索服务器。32位驱动程序: HKLM \软件\ Wow6432Node \ Informix \ SQLHOSTS \服务器名称
64位驱动程序: HKLM \软件\ Informix \ SQLHOSTS \服务器名称
如果未在此处列出服务器,则会出现错误“ 服务器XYZ在sqlhosts中未作为数据库服务器名称列出。”
请注意,只有Linux使用sqlhosts 文件。在Windows上,相同的数据存储在注册表中。
尽管错误消息和文档以及几个网页使您认为如此,但您无需创建sqlhosts文件。
您不需要使用IBM工具 SetNet32 为服务器生成条目。
您只需要将所有必需参数传递给ODBC驱动程序,错误就会消失。
IBM无法给出更智能的错误消息确实很可惜。