我需要从.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
答案 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,但这将涉及新的许可证,而安装修订包将重新使用您现有的许可证。