Мы хотим повторно использовать нашу библиотеку .net 4.7 (C #) для доступа к базе данных DB2 10.5 из нового проекта .net core 2.2.К сожалению, я получаю ошибки, если открываю соединение:
System.InvalidOperationException: "SQL1159 Ошибка инициализации с поставщиком данных DB2 .NET, код причины 2, токены D: \ Projekte \ Main-Branch-IpIdentity \Services \ InvoiceApi \ InvoiceApi \ bin \ db2app64.dll,, Владелец процесса
Отсутствующий ddl находится в пути в C: \ Program Files \ IBM \ SQLLIB \ BIN. Я скопировал все изэтот каталог в выходной каталог проекта и получил:
System.InvalidOperationException: "SQL1159 Ошибка инициализации с поставщиком данных DB2 .NET, код причины 10, токены 0.0.0, 10.5.5, владелец процесса:
Я написал консольный проект в ядре .net, вызывая dll ядра .net с доступом к DB2:
class Program
{
static void Main(string[] args)
{
var count = DB2AccessCore.Db2Access.GetCount();
}
}
namespace DB2AccessCore
public class Db2Access
{
public static int GetCount()
{
var con = new DB2Connection("....");
con.Open();
var cmd = con.CreateCommand();
cmd.CommandText = "SELECT COUNT(*) FROM data.abstimmfeldausschnitt";
var a = cmd.ExecuteScalar();
con.Close();
return (int)a;
}
}
}}
Пример работаетхорошо, также если я использую тот же код в консоли .net 4.7 и DLL.Но я вызываю dll 4.7 из основной консоли и получаю исключение:
System.AccessViolationException: «Попытка чтения или записи защищенной памяти. Это часто указывает на то, что другая память повреждена».
Звучит нехорошо…
В чем я не прав или с DB2 невозможно смешать ядро и 4.7?Кто-нибудь уже сделал это?
Спасибо за помощь!