我在VisualStudio2017& .Net Core2.1中安装了IBM.Data.DB2.Core版本(1.2.2.100)。我试图测试简单的DB2 (z/OS服务器)连接,并获得以下错误。我们的DB2服务器类型是OS390,版本是11。
错误42968 SQL1598N连接到数据库服务器的尝试由于许可证问题而失败。
using (DB2Connection con = new DB2Connection("Server=xxxx.xxxx.com:446;Database=XXXX;UID=XXXXXX;PWD=xxxxx"))
{
try
{
con.Open();
}
catch (Exception ex)
{
throw ex;
}
} 此外,我还将许可文件复制到.nuget\packages\ibm.data.db2.core\1.2.2.100\build\clidriver\license文件夹。我尝试了这里提到的所有东西:package?lang=en
有什么想法吗?
发布于 2018-06-08 18:40:29
for DB2核心版本1.1 & 1.2附带了DB2驱动程序版本11。如果DB2版本小于11,则这两个包不支持。下面是解决此问题的步骤。
另外,1.0版本不需要许可证文件。希望这能有所帮助。
发布于 2019-04-18 15:56:21
在这个问题上花了几个小时,下面是我使用最新版本的软件包1.3.0.100和我已经安装的有效DB2 11.1许可证的效果。我怀疑这种方法也适用于1.1和1.2,前提是您已经拥有了许可证。
将以下块添加到项目文件中,根据本地设置的需要调整DB2License的路径:
<ItemGroup>
<DB2License Include="C:\ProgramData\IBM\DB2\{FOLDER NAME THAT VARIES BY INSTALL}\license\**\*.*"/>
</ItemGroup>
<Target Name="CopyFiles" AfterTargets="AfterBuild">
<Copy SourceFiles="@(DB2License)" DestinationFolder="$(OutDir)\clidriver\license\" />
</Target>重要的是,在应用程序运行之前,$(OutDir)\clidriver\license\拥有表示有效的DB2 11.1+许可证所需的所有文件。对我来说有3份文件。对于服务器构建和发布,可能需要稍微复杂一些的设置才能将正确的文件发送到预期的位置。
以下是我尝试过的其他一些似乎对我没有帮助,但可能会对其他人有所帮助的事情:
%userprofile%\.nuget\packages\IBM.Data.DB2.Core\<version>\build\clidriver\bin或%userprofile%\.nuget\packages\IBM.Data.DB2.Core\<version>\build\clidriver\license添加到PATH环境变量中。这似乎完全没有必要。%userprofile%\.nuget\packages\IBM.Data.DB2.Core\<version>\build\clidriver\license。这是可行的,但并不理想,因为它需要在nuget包还原之后在每台机器上执行,然后在稍后更改nuget包的版本时重新完成。当然,提到“嘿,只需将许可复制到此路径”的地方,都没有指定包含现有许可的默认目录:C:\ProgramData\IBM\DB2\{FOLDER NAME THAT VARIES BY INSTALL}\license\。发布于 2019-11-02 00:15:05
您可以使用本教程
/CODE示例/
using System;
using IBM.Data.DB2;
namespace dotNetSSLTest
{
class Program
{
static void Main(string[] args)
{
DB2Command MyDB2Command = null;
// Use the dsn alias that you defined in db2dsdriver.cfg with the db2cli writecfg command in step 1.
String MyDb2ConnectionString = "database=alias;uid=userid;pwd=password;";
DB2Connection MyDb2Connection = new DB2Connection(MyDb2ConnectionString);
MyDb2Connection.Open();
MyDB2Command = MyDb2Connection.CreateCommand();
MyDB2Command.CommandText = "SELECT branch_code, city from GOSALES.BRANCH";
Console.WriteLine(MyDB2Command.CommandText);
DB2DataReader MyDb2DataReader = null;
MyDb2DataReader = MyDB2Command.ExecuteReader();
Console.WriteLine("BRANCH\tCITY");
Console.WriteLine("============================");
while (MyDb2DataReader.Read())
{
for (int i = 0; i <= 1; i++)
{
try
{
if (MyDb2DataReader.IsDBNull(i))
{
Console.Write("NULL");
}
else
{
Console.Write(MyDb2DataReader.GetString(i));
}
}
catch (Exception e)
{
Console.Write(e.ToString());
}
Console.Write("\t");
}
Console.WriteLine("");
}
MyDb2DataReader.Close();
MyDB2Command.Dispose();
MyDb2Connection.Close();
}
}
}https://stackoverflow.com/questions/50725613
复制相似问题