2

我正在尝试使用 VS2012 和框架 4.0 连接到 IBM DB2。我安装了 64 位 IBM 数据服务器驱动程序包(DS 驱动程序)(V10.5 修订包 2)和 32 位(仅 1 个可用)IBM Database Add-Ins for Visual Studio (V10.1 FP 2)

如果我使用 ODBC 驱动程序连接,则连接成功。但是如果我使用 IBM.Data.DB2 进行连接,我会收到以下错误:

错误 [08001] [IBM] SQL30081N 检测到通信错误。正在使用的通信协议:“TCP/IP”。正在使用的通信 API:“SOCKETS”。检测到错误的位置:“10.60.20.34”。检测错误的通信功能:“连接”。协议特定错误代码:“10061”、“ ”、“ ”。SQLSTATE=08001

这是示例代码:

string connStr = "Database=TestDB;User ID=demouser;Password=demouser5;Server=DemoServer;Connection Timeout=0";
DB2Connection cn = new DB2Connection();

cn.ConnectionString = connStr;
cn.Open();

Console.ReadKey();
cn.Close();

这个链接说它可能是服务器上的防火墙问题,但是 ODBC 是如何连接的,IBM 驱动程序会抛出异常。

任何见解表示赞赏。

4

2 回答 2

4

既然您知道要连接到什么,我将在此处提供一些可能会有所帮助的其他信息。

基本上,DB2 家族有三个成员。您使用哪一个取决于操作系统:IBM z/OS、IBM i 或 LUW [Linux/Unix/Windows]。在大多数情况下,它们具有基本相同的基本特征,但存在细微的差异和不那么细微的差异。

我们实际上不再有 AS/400,尽管有些人仍然这么称呼它们。如果您的系统是最新的并且是最新的,那么您可能在Power 7 系统(硬件)上使用IBM i 7.1(操作系统)。一些系统仍在 IBM i 6.1 甚至 i5/OS v5r4 上。

DB2 是操作系统的一个紧密集成且不可分割的组件,因此您的 DB2 版本就是操作系统的版本。

请务必使用适当版本的IBM i 信息中心作为您的 SQL 参考。不要错误地将站点用于 DB2 LUW 或 DB2 z/OS。

您最有可能使用的连接软件是IBM i Access for Windows,它包括一个与 DB2 for i 一起使用的 .NET Data Provider。您将需要与 IBM i OS 版本匹配的版本,或更高版本,但不能更低。确保为您的版本安装了最新的服务包。

您可能需要查看连接字符串参数。您的系统管理员(或 DBA ,如果有系统管理员)可能会推荐适当的设置。

我建议使用“系统命名”以利用“库列表”,当您没有使用模式名称限定表或视图时,它允许 DB2 搜索各种模式(“库”),有点类似于Windows PATH 环境变量。我们更喜欢这种方法,它使代码在各种环境中更加灵活。

PS。将适用于您在此站点上的问题。

于 2013-08-09T01:45:38.680 回答
0

您需要在服务器信息下指定连接的默认端口。它是446。所以你的 connectionString 看起来像

string connStr = "Database=TestDB;User ID=demouser;Password=demouser5;Server=DemoServer:446;Connection Timeout=0";

请注意,您需要有效的DB2 Connect许可证才能连接到 ISeries。

于 2013-12-11T07:44:19.407 回答