Подтвердить что ты не робот

SYBASE ODBC.Net CORE

1. Кто-нибудь успешно использовал ODBC от С# до Sybase ASE?
  2. Или лучше, кто-нибудь успешно использовал Sybase ASE с .NET Core?

Я использую .NET Core 1.1, а текущая Sybase.AdoNet4.AseClient.dll не работает, поэтому я пытаюсь использовать ODBC. Я попытался использовать два пакета ODBC:

  • Mono.Data.OdbcCore(NuGet)
  • MSA.Net.Core.ODBC(NuGet)

Оба хорошо работают с встроенными запросами, и оба хорошо работают, вызывая процедуры Sybase Store WITHOUT Parameter, но обе имеют ту же самую точную ошибку при попытке отправить параметры в sp, где требуются параметры.

Вот фрагмент:

command.CommandType = CommandType.StoredProcedure;
command.CommandText = "XX_GetLookUp";
command.Parameters.Add("@Type", OdbcType.VarChar).Value = "ACC";
using (var reader = command.ExecuteReader()) {
    ...
}

Я постоянно получаю следующую ошибку во время команды. ExecuteReader(): System.Data.Odbc.OdbcException: "ERROR [ZZZZZ] [SAP] [ASE ODBC Driver] [Adaptive Server Enterprise] Процедура iKYC_GetLookUp ожидает параметр @Type, который не был предоставлен.

Я попытался использовать Type с и без @, но каждый из них генерирует ту же ошибку.

Я также попробовал несколько других ароматов:

  • command.CommandText = "{вызов dbo.iKYC_GetLookUp (?)}";
  • command.CommandText = "{вызов dbo.iKYC_GetLookUp}";
  • command.CommandText = "{dbo.iKYC_GetLookUp (?)}";
  • command.CommandText = "dbo.iKYC_GetLookUp (?)";
  • command.CommandText = "dbo.iKYC_GetLookUp?";

Здесь каждый из них генерирует: System.Runtime.InteropServices.SEHException: "Внешний компонент выбрал исключение".

Я также попытался создать объект параметра отдельно, без везения (такая же ошибка, отсутствует @Type):

OdbcParameter p = new OdbcParameter();
p.ParameterName = "@Type";
p.DbType = DbType.AnsiString;
p.Direction = ParameterDirection.InputOutput;
p.Value = "ACC";
cmd.Parameters.Add(p);

Как указано выше, если я делаю параметр как null, в процедуре хранилища код работает и данные возвращаются как ожидалось, , поэтому проблема возникает вокруг передаваемых параметров.

Кто-нибудь успешно использовал ODBC от С# до Sybase ASE? Кто-нибудь успешно использовал Sybase ASE с .NET Core?

Дополнительная информация: Я использую Visual Studio 2017 (v 15.2). Core 1.1 и с использованием Sybase ASE 16.0 sp2.

4b9b3361

Ответ 1

У нас была похожая проблема - мы хотели использовать ADO.NET в стеке AWS без сервера - который является только.NET Core. Мы подняли вопрос о том, что SAP запрашивает поддержку.NET Core, но ничего не получили.

Мы попробовали ODBC и не смогли заставить его работать с возвращаемыми значениями в наших хранимых процедурах, и мы немного попробовали и написали наш собственный ADO.NET Core DbProvider для ASE 15-16.

Он реализует протокол TDS 5 непосредственно в среде.NET Core и превосходит реализацию SAP/Sybase во всех наших тестовых примерах.

https://github.com/DataAction/AdoNetCore.AseClient

В вики есть документы для запуска модульных, интеграционных и тестовых тестов.

Большинство функций реализовано, и запросы на получение ответов и отзывы приветствуются. .NET 4.6 и.NET Core 1.0, 1.1, 2.0 и 2.1 поддерживаются.

У нас это работает с использованием AWS Lambda и.NET Core 2.0.