IBM.Data.DB2.核心设置过程



我想使用.NET Core 3.1从Windows客户端机器连接到IBM I 7.2服务器上的DB2数据库。我通过NuGet安装了IBM.Data.DB2.Core,但它总是抛出这个神秘的异常:

IBM.Data.DB2.Core.DB2Exception
HResult=0x80004005
Message=External component has thrown an exception.
Source=IBM.Data.DB2.Core
StackTrace:
at IBM.Data.DB2.Core.DB2ConnPool.Open(DB2Connection connection, String& szConnectionString, DB2ConnSettings& ppSettings, Object& ppConn)
at IBM.Data.DB2.Core.DB2Connection.Open()
at Dapper.SqlMapper.<QueryImpl>d__140`1.MoveNext() in /_/Dapper/SqlMapper.cs:line 1079
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable`1 commandTimeout, Nullable`1 commandType) in /_/Dapper/SqlMapper.cs:line 721
at Dapper.SqlMapper.Query(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable`1 commandTimeout, Nullable`1 commandType) in /_/Dapper/SqlMapper.cs:line 648
at SqlPerformanceTesting.Program.<Main>d__0.MoveNext() in C:UsersmmarcheseDesktopSqlPerformanceTestingSqlPerformanceTestingProgram.cs:line 54

我认为我需要先在我的Windows客户端机器上安装不同的驱动程序/软件。现在,我有";IBM I Access Client Solutions";安装了,但也许我需要其他东西,比如";IBM数据服务器驱动程序"这似乎需要许可证?我还需要在IBM服务器上安装一些东西吗?有人能帮我把它拼出来吗?或者给我指一个好的导游?我自己找不到太多东西。比如,";以下是一般步骤:;

  1. 在Windows客户端上安装软件A
  2. 在IBM i服务器上安装软件B
  3. 在Windows客户端上安装IBM.Data.DB2.Core
  4. 执行步骤C以配置Windows客户端
  5. 执行步骤D以配置IBM服务器

更新:

如果我指定了一个错误的连接字符串,我会得到一个不同的错误。由于IBM.Data.DB2.Core包含一个用于构建有效连接字符串的类,所以我认为我的连接字符串是可以的:

var connStringBld = new DB2ConnectionStringBuilder()
{
Database = "myDb",
UserID = "myUser",
Password = "myPassword",
Server = "myIp"
};
Console.WriteLine(connStringBld.ConnectionString);
// Database=myDb;User ID=myUser;Password=myPassword;Server=myIp

我遇到了同样的问题,但我只遵循以下步骤:

  • 安装IBM.Data.D2.Core(仅适用于windows,如果在Linux中使用,则必须安装IBM.Data.d2.Core lnx。也已安装,因为我将其运行到Docker容器中(。

  • 将(Windows的(许可证文件粘贴到我的项目中,该项目位于{MyProject}/License文件夹中。许可证是db2.consv.licdb2 ese.lic文件

  • 还检查当我使用Nuget时clidriver";附加在根项目中。我还验证了位置%userprofile%\.nuget\packages\ibm.data.db2.core\1.3.0.100\build\clidriver\license具有许可证文件。

  • 使用在Startup.cs中定义DI

    services.AddDbContext<Db2Context>(options =>
    {
    options.UseDb2(connection, si =>
    {
    si.SetServerInfo(IBMDBServerType.AS400, IBMDBServerVersion.AS400_07_02));
    }
    });
    

这就是我所做的全部。对实体建模,并使用LINQ。

最新更新