从 C# 连接到 IBM DB2 10.1

Connecting to IBM DB2 10.1 from C#

我需要从 .Net 应用程序连接到 IBM DB2 10.1。我已经开始使用控制台应用程序来获得连接作为概念证明。我正在使用 IBM.Data.DB2 名称空间。

我收到以下错误:

 InvalidOperationException was unhandled: SQL1159  Initialization error with DB2 .NET Data Provider, reason code 2, tokens C:\Users\myname\Desktop\dbConnect\dbConnectApp\dbConnectApp\bin\db2app.dll, , Process Owner: XXXXX\myname

起初我有处理器架构错误。我通过从 32 位 DB2 数据驱动程序引用 IBM.Data.DB2 dll,然后在 Visual Studio.

的配置管理器中将平台执行架构更改为 x86 来解决这个问题

一些信息:

Visual Studio 2012,.NET 4.5,IBM DB2 10.1 on Windows Server 2008 R2

示例代码:

  static void SelectRow(string myConnectionString)
    { 
        if (myConnectionString == "")
        {
            myConnectionString = "server=MyServerName:60001;Database=mydatabasename;UID=db2admin;PWD=Mypassword1!;";
        }
        DB2Connection myConn = new DB2Connection(myConnectionString);
        string mySelectQuery = "Select * from DB_SCH.USER";
        DB2Command myDB2Command = new DB2Command(mySelectQuery);
        myDB2Command.Connection = myConn;
        myConn.Open();
        myDB2Command.ExecuteNonQuery();
        myConn.Close();
    }

如何解决这个错误?从 C# 连接到 Db2 还有哪些其他方法?

编辑:更改为 IBM.Data.Db2 的 64 位版本并在 Visual Studio 项目中更改为 64 位处理器架构后出现新错误:

 SQL1159  Initialization error with DB2 .NET Data Provider, reason code 3, tokens C:\Users\myname\Desktop\dbConnect\dbConnectApp\dbConnectApp\bin\db2app64.dll, , Process Owner: xxxxx\myusername

您正在 Windows-Server 2008 R2 上使用 Db2 V10.1 的修复包 0,全部为 64 位。

Db2 构建 pre-dates Visual-Studio-2012 等您会遇到问题,直到您部署明确支持 Visual-Studio-2012 的 Db2 构建。

最好的办法是将 Db2 服务器升级到 V10.1 的最终修复包,即修复包 6(当前日期),可从 IBM Fix Central 网站下载。我建议您下载 server 修复包映像,并按照 Db2 知识中心的步骤进行 pre-installation 步和 post-installation 步。 server-fixpack 无需现有安装即可安装(它将工作 90 天),这让您可以在提交到服务器之前在开发环境中对其进行测试。

在使用 db2setup GUI 安装期间,您需要明确选择安装 "IBM Database Add-Ins for Visual Studio" 组件,该组件提供可与 Visual-Studio-2012 配合使用的外部插件。

从技术上讲,Db2 V10.1 对 Visual-Studio-2012 的支持到达了 V10.1 修复包 2,但如果您必须麻烦应用新的修复包,您也可以安装最终的修复包V10.1 树的一部分,只是为了获得几年的错误修复。

另一种选择是将 Db2 的版本升级到 V10.5 或 V11.1,但这将涉及新的许可证,而安装修复包将 re-use 您现有的许可证。