从C#连接到IBM DB2 10.1

时间:2018-02-23 19:21:41

标签: c# database db2 database-connection db2-luw

我需要从.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的Configuration Manager中将平台执行体系结构更改为x86来解决这个问题。

一些信息:

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

示例代码:

  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?

编辑:更改为64位版本的IBM.Data.Db2并在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

1 个答案:

答案 0 :(得分:1)

您在Windows Server 2008 R2上使用Db2 V10.1的fixpack 0,全部为64位。

Db2构建早于Visual-Studio-2012,因此您将遇到问题,直到部署显式支持Visual-Studio-2012的Db2版本。

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

在使用db2setup GUI进行安装期间,您需要明确选择安装" IBM Database Add-Ins for Visual Studio" component,它提供了与Visual-Studio-2012一起使用的外部插件。

从技术上讲,Db2 V10.1对Visual-Studio-2012的支持到达了V10.1 fixpack 2,但是如果你必须遇到应用新修订包的麻烦,你也可以安装V10的最终修订包。 1棵树,只是为了获得多年的bug修复。

另一个选择是将Db2的版本升级到V10.5或V11.1,但这将涉及新的许可证,而安装修订包将重新使用您现有的许可证。