我需要从一个DB2应用程序连接到IBMS10.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位IBM.Data.DB2数据驱动程序中的DB2 dll,然后在Visual中的Configuration中将平台执行架构更改为x86来解决这个问题。
一些信息:
Visual 2012,.NET 4.5,DB2 10.1 on Windows 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();
}可以做些什么来修复这个错误?从Db2连接到C#的其他方法有哪些?
编辑:在Visual项目中更改为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发布于 2018-02-24 09:40:40
您正在2008 Db2上使用Db2 V10.1的fixpack 0,全部为64位.
该Db2构建的日期早于Visual-Studio-2012,因此您将遇到问题,直到您部署了一个显式支持Visual-Studio-2012的Db2构建。
最好的方法是将DB2服务器升级到最后的补丁包V10.1,这是fixpack 6(在当前日期),可以从IBM网站下载。我建议您下载服务器修复包映像,并按照Db2知识中心步骤进行安装前步骤和安装后步骤。服务器-补丁包是可安装的,没有现有的安装(它将工作90天),这使您可以在开发环境中测试它,然后再提交到您的服务器。
在安装db2setup图形用户界面时,您需要显式地选择安装“”组件,该组件提供使用Visual-Studio-2012的外部插件。
从技术上讲,Visual-Studio2012的Db2 V10.1中的支持达到了V10.1FixPack 2,但是如果您必须麻烦地应用一个新的补丁包,那么您可以安装V10.1树的最后一个补丁包,仅仅是为了获得几年的bug修复。
另一种选择是将Db2的版本升级到V10.5或V11.1,但这将涉及到新的许可证,而安装补丁包将重复使用现有的许可证。
https://stackoverflow.com/questions/48954841
复制相似问题