Sybase ODBC .Net Core

10

1. 有人成功地从c#使用ODBC连接Sybase ASE吗?
2. 或者更好的是,有人成功地在.NET Core中使用Sybase ASE吗?

我正在使用.NET Core 1.1,当前的Sybase.AdoNet4.AseClient.dll无法工作,所以我尝试使用ODBC。我已经尝试使用了两个ODBC包:

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

两者都可以很好地执行行内查询,并且在不带参数的情况下调用存储过程时也能正常工作,但是当尝试发送必需的存储过程参数时,两者都会有完全相同的错误。

以下是示例代码:

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

在command.ExecuteReader()期间,我不断收到以下错误信息:System.Data.Odbc.OdbcException: 'ERROR [ZZZZZ] [SAP][ASE ODBC Driver][Adaptive Server Enterprise]Procedure iKYC_GetLookUp expects parameter @Type, which was not supplied.

我尝试使用Type与或没有@,但每个都生成相同的错误。

我还尝试了几个其他方法:

  • command.CommandText = "{call dbo.iKYC_GetLookUp(?)}";
  • command.CommandText = "{call dbo.iKYC_GetLookUp}";
  • command.CommandText = "{dbo.iKYC_GetLookUp(?)}";
  • command.CommandText = "dbo.iKYC_GetLookUp(?)";
  • command.CommandText = "dbo.iKYC_GetLookUp ?";

以上每个生成相同的错误信息:System.Runtime.InteropServices.SEHException: 'External component has thrown an exception.'

我还尝试分别构建参数对象,但没有成功(同样的错误,缺少@Type):

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

如前所述,如果我将参数设置为null,在存储过程中,则代码正常工作,并返回预期的数据,因此问题似乎出现在传递的参数上

有人成功地从C#使用ODBC连接到Sybase ASE吗? 有人成功地将Sybase ASE与.NET Core一起使用吗?

附加信息: 我正在使用Visual Studio 2017(版本15.2)。Core 1.1并使用Sybase ASE 16.0 sp2。

1个回答

6
我们遇到了类似的问题——我们想在AWS无服务器堆栈上使用ADO.NET,但这个堆栈只支持.NET Core。我们向SAP提出了关于.NET Core支持的请求,但没有得到任何回应。
我们尝试了ODBC,但无法使存储过程的返回值正常工作,所以我们决定自己编写ASE 15-16的ADO.NET Core DbProvider。
它在.NET Core中本地实现了TDS 5协议,并在我们所有的测试案例中比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上成功运行了它。

1
对于核心系统的问题,SAP支持几乎没有任何帮助。我会查看你的实施情况! - Monkey Man
1
非常感谢您分享这个提供程序。SAP/Sybase真是让人头疼。 - karczilla

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接