【问题标题】:SYBASE ODBC .Net CORESYBASE ODBC .Net 核心
【发布时间】:2018-01-02 12:08:50
【问题描述】:

1.有没有人成功使用 ODBC 从 c# 到 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 存储过程,但是在尝试将参数发送到需要参数的 sp 时,两者都有 same exact 错误.

这是一个sn-p:

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 需要参数 @Type,但未提供。

我尝试使用带有和不带有@ 的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 throw 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# 到 Sybase ASE 的 ODBC? 有没有人成功将 Sybase ASE 与 .NET Core 一起使用?

其他信息: 我正在使用 Visual Studio 2017 (v 15.2)。核心 1.1 并使用 Sybase ASE 16.0 sp2。

【问题讨论】:

    标签: asp.net asp.net-core odbc sap-ase


    【解决方案1】:

    我们遇到了类似的问题 - 我们想在 AWS Serverless 堆栈上使用 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

    在 wiki 上有文档可以自己运行单元、集成和基准测试。

    大多数功能都已实现,欢迎提出拉取请求和反馈。支持 .NET 4.6 和 .NET Core 1.0、1.1、2.0 和 2.1。

    我们使用 AWS Lambda 和 .NET Core 2.0 进行这项工作。

    【讨论】:

    • 对 SAP 对 Core 的支持同样,零帮助。将看看你的实现!
    • 非常感谢您分享此提供商。 sap/sybase 太痛苦了。
    猜你喜欢
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 2018-09-21
    相关资源
    最近更新 更多