2017-07-27 29 views
10

1. Có ai đã sử dụng thành công ODBC từ C# đến Sybase ASE không?
2. Hoặc tốt hơn, có ai đã sử dụng thành công Sybase ASE bằng .NET Core không?SYBASE ODBC .Net CORE

Tôi đang sử dụng .NET Core 1.1 và hiện tại Sybase.AdoNet4.AseClient.dll không hoạt động, vì vậy tôi đang cố gắng sử dụng ODBC. Tôi đã cố gắng sử dụng hai gói ODBC:

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

Cả hai làm việc tốt với các truy vấn trong-line và cả hai làm việc tốt gọi một thủ tục lưu trữ Sybase KHÔNG tham số nhưng cả hai có lỗi chính xác tương tự khi cố gắng gửi tham số đến một sp, nơi các tham số được yêu cầu.

Dưới đây là một đoạn trích:

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

tôi liên tục nhận được lỗi sau đây trong command.ExecuteReader(): System.Data.Odbc.OdbcException: 'ERROR [zzzzz] [SAP] [ASE Trình điều khiển ODBC] [Enterprise Server thích ứng] Thủ tục iKYC_GetLookUp dự kiến ​​tham số @Type, không được cung cấp.

Tôi đã cố gắng sử dụng Loại có và không có @ nhưng mỗi lỗi tạo ra cùng một lỗi.

tôi đã thử nhiều hương vị khác cũng:

  • command.CommandText = "{(?) Gọi dbo.iKYC_GetLookUp}";
  • lệnh.CommandText = "{call dbo.iKYC_GetLookUp}";
  • lệnh.CommandText = "{dbo.iKYC_GetLookUp (?)}";
  • lệnh.CommandText = "dbo.iKYC_GetLookUp (?)";
  • lệnh.CommandText = "dbo.iKYC_GetLookUp?";

Nơi mỗi trường hợp trên tạo ra: System.Runtime.InteropServices.SEHException: 'Thành phần bên ngoài đã ném một ngoại lệ'.

Tôi cũng đã cố gắng để xây dựng các đối tượng tham số riêng biệt, không có may mắn (giống lỗi, thiếu @type):

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

Như đã trình bày trước đây, nếu tôi có tham số như null, trên thủ tục lưu trữ, mã hoạt động và dữ liệu được trả về như mong đợi, do đó vấn đề dường như là xung quanh các tham số được thông qua.

Có ai đã sử dụng thành công ODBC từ C# đến Sybase ASE không? Có ai đã sử dụng thành công Sybase ASE bằng .NET Core không?

Thông tin bổ sung: Tôi đang sử dụng Visual Studio 2017 (v 15.2). Core 1.1 và sử dụng Sybase ASE 16.0 sp2.

Trả lời

2

Chúng tôi đã có một vấn đề tương tự - chúng tôi muốn sử dụng ADO.NET trên ngăn xếp máy chủ AWS - đó là .NET Core. Chúng tôi đã nêu ra một vấn đề với SAP yêu cầu hỗ trợ cho .NET Core, nhưng không có gì trở lại.

Chúng tôi đã đi với ODBC và không thể làm việc với các giá trị trả về các thủ tục được lưu trữ của chúng tôi, và bit viên đạn và viết ADO.NET Core DbProvider riêng của chúng tôi cho ASE 15-16.

Nó thực hiện giao thức TDS 5 dưới mui xe tự nhiên trong .NET Core và thực hiện tốt hơn việc triển khai SAP/Sybase trong tất cả các trường hợp thử nghiệm của chúng tôi.

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

Có tài liệu trên wiki để chạy các bài kiểm tra đơn vị, tích hợp và chuẩn cho chính mình.

Hầu hết các tính năng được triển khai và yêu cầu kéo và phản hồi được hoan nghênh. .NET 4.6 và .NET Core 1.0, 1.1 và 2.0 được hỗ trợ.

Chúng tôi làm việc này bằng AWS Lambda và .NET Core 2.0.

+1

Tương tự, không trợ giúp với SAP hỗ trợ cho Core. Sẽ xem xét triển khai của bạn! –

+1

cảm ơn bạn rất nhiều vì đã chia sẻ nhà cung cấp này. sap/sybase là một nỗi đau. – chris