1. 有没有人成功使用ODBC从c#到Sybase ASE?
2. 或者更好,有没有人成功地将 Sybase ASE 与 .NET Core 一起使用?
我正在使用 .NET Core 1.1 并且当前的 Sybase.AdoNet4.AseClient.dll 不起作用,所以我正在尝试使用 ODBC。我尝试使用两个 ODBC 包:
两者都可以很好地处理内联查询,并且都可以很好地调用没有参数的 Sybase 存储过程,但都具有 完全相同 尝试将参数发送到需要参数的 sp 时出错。
这是一个片段:
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,但每个都会产生相同的错误。
我也尝试了其他几种口味 :
以上每个生成: 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。
最佳答案
我们遇到了类似的问题——我们想在 AWS Serverless 堆栈上使用 ADO.NET——它只是 .NET Core。我们提出了 SAP 请求支持 .NET Core 的问题,但没有得到任何回复。
我们尝试了 ODBC,但无法让它处理我们存储过程的返回值,于是硬着头皮为 ASE 15-16 编写了我们自己的 ADO.NET Core DbProvider。
它在 .NET Core 的底层实现了 TDS 5 协议(protocol),并且在我们所有的测试用例中都优于 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 进行这项工作。
关于asp.net - SYBASE ODBC .Net 核心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45339318/