我可以给你三个有效的连接字符串。我在 VS2012 中使用这些连接到 iSeries V6R1M0。
使用 IBM DB2 for i .NET 提供程序:
DataSource=*ServerIP*;UserID=*user*;SchemaSearchList="*list of libraries separated by commas*";Database=*database_name*;PersistSecurityInfo=True
为 OLE DB 使用 .NET Framework 数据提供程序
Provider=IBMDA400.DataSource.1;Data Source=*ServerIP*;Persist Security Info=True;OLE DB Services=-1;User ID=*user*;Initial Catalog=*database_name*;Catalog Library List="l*ist of libraries separated by commas*"
WebService 中使用的连接
DataSource=*ServerIP*; Default Collection='';User ID=*user*; Password=*password*;Data Compression=True; Connection Timeout = 180;
在最后一个中,我既不使用SchemaSearchList也不使用Catalog Library List,因为当我们建立与 iSeries 的连接时,始终存在一个特定的库。在那个库中,我们放置了一个存储过程,我们总是在每个新连接中运行它,定义库列表。
我知道这个问题有一年的时间,但对于需要的人来说,这又是一种帮助。
更新
还有一件事,IBM Data Provider 允许您在 iSeries 上建立与 DB2 的连接而没有任何问题,但是当我们谈论 Visual Studio 集成时,它会很痛苦。
例如,直到上周我还在使用 IBM Client Access(iSeries 的客户端软件)附带的 IBM Data Provider。我可以在我的所有应用程序中建立 sql 连接,而无需 OLEDB,在 Visual Studio 2010 中但不能在 2012 年或 2013 年。
这是因为我的客户端访问是在 VS2012 之前发布的。上周我安装了客户端访问的更新,现在我已经在 VS2012 和 VS2013 上与 DB2 iSeries 建立了 sql 连接。因此,始终拥有与您的 iSeries 版本兼容的最新版本的 Client Access 很方便。
此外,当您安装 Client Access 时,请检查这些文件夹中的 machine.config 文件
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config
检查其中的DbProviderFactories
标签和所有标签。Client Access 通常在安装时会保留这些格式错误。
如果可能,为了获得最佳性能,当您有一个具有托管代码的数据提供者并由制造数据库服务器的同一家公司进行优化时,不要使用 ODBC 或 OLE DB。在这种情况下,IBM 也不例外。