【发布时间】:2018-02-23 19:21:41
【问题描述】:
我需要从 .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。
一些信息:
Windows Server 2008 R2 上的 Visual Studio 2012、.NET 4.5、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 还有哪些其他方法?
编辑:在 Visual Studio 项目中更改为 64 位版本的 IBM.Data.Db2 并更改为 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
【问题讨论】:
-
与您的问题无关,但使用 ExecuteNonQuery 执行的 Select 查询没有意义。
-
请说明您在哪一行得到了异常
-
@Steve 我的请求——异常发生在 myConn.Open()
-
@Steve 我刚开始的时候不是选择查询。不过还是谢谢你的建议。
-
您的 Db2 服务器是 32 位还是 64 位版本?您需要使用 Db2 V10.1 fixpack 6(适用于 Windows Server...),并且您还需要确保您还安装了“IBM Database Add-Ins for Visual Studio”(默认情况下未安装,但它是 db2setup GUI 上的一个选项,也可以单独安装)。这是可从 IBM 修复中心下载的 V10.1.0.6 的“服务器修复包”的一部分。我无法从您的问题中判断您是否已经正确安装了这些组件,或者哪些位数等。
标签: c# database db2 database-connection db2-luw