2017-07-27 149 views
10

1.有沒有人成功地將c#中的ODBC用於Sybase ASE?
2.或者更好,有沒有人成功地將Sybase ASE與.NET Core一起使用?SYBASE ODBC .Net CORE

我正在使用.NET Core 1.1和當前的Sybase.AdoNet4.AseClient.dll不起作用,所以我嘗試使用ODBC。我曾嘗試使用兩個ODBC包:

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

都工作很好地在網上查詢並且都可以很好地調用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驅動程序] [Adaptive Server Enterprise]過程iKYC_GetLookUp期望未提供參數@Type。

我試圖使用類型有和沒有@但每個產生相同的錯誤。

我沒有嘗試其他幾種口味以及

  • command.CommandText = 「{(?)調用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:'外部組件已引發異常。

我還試圖建立參數對象分開,沒有運氣(同樣的錯誤,遺漏@Type):

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

由於之前在說,如果我做的參數爲空,存儲過程中,代碼工作並且數據按預期返回,因此問題似乎在傳遞參數附近。

有沒有人成功地將c#中的ODBC用於Sybase ASE? 有沒有人成功使用Sybase ASE和.NET Core?

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

回答

2

我們有一個類似的問題 - 我們想在AWS無服務器堆棧上使用ADO.NET - 這是僅限於.NET Core。我們提出了SAP請求支持.NET Core的問題,但沒有得到任何回報。

我們與ODBC一去,不能讓它有返回值在我們的存儲過程的工作,忍辱負重,寫我們自己的ADO.NET核心DbProvider爲ASE 15-16。

它在.NET Core本身實現了TDS 5協議,在我們所有的測試用例中都優於SAP/Sybase實現。

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

有一個在維基文檔運行單元,集成和基準測試自己。

大部分功能都已實現,歡迎提出請求和反饋。支持.NET 4.6和.NET Core 1.0,1.1和2.0。

我們使用AWS Lambda和.NET Core 2.0進行工作。

+1

與SAP對Core的支持相同,零幫助。將看看你的實現! –

+1

非常感謝你分享這家提供商。 SAP/SYBASE是如此的痛苦。 – chris