[英]AseConnection InfoMessage returning print statement as an error message
我在 Sybase ASE 15.7 中工作,我正在嘗試從 T-SQL 返回消息,如下所示。 我正在使用 AseConnection.InfoMessage 事件處理程序從數據庫中捕獲消息。 它工作正常,但它也將打印語句作為 AseError 消息返回。 為什么會發生這種情況,我該如何糾正?
控制台輸出:
日志:SomeTable 中有 12522 行
AseError 日志:SomeTable 中有 12522 行
string sql= @"set nocount on
declare @rowcount int
select @rowcount = count(*) from SomeTable
print 'Log: %1! rows in SomeTable', @rowcount";
using (var conn = GetOpenConnection(connectionString))
{
conn.InfoMessage += (s,e) =>
{
Console.WriteLine(e.Message);
foreach (var error in e.Errors)
Console.WriteLine(error.ToString())
};
using (var command = new AseCommand(sql, conn))
{
command.ExecuteNonQuery();
}
}
這只是驅動程序作者的一個非常奇怪的設計決定。 所有消息、錯誤和信息共享一個數據結構,將消息描述為AseError
。
我在一個開源項目上工作,該項目生成了AseClient
的.NET Core 版本。 該項目的目標之一是成為 SAP/Sybase 驅動程序的直接替代品——因此我們復制了上述設計決策——盡管它很奇怪。
嚴重性>10
被視為錯誤。 否則,它被認為是信息性的。 如果它幫助你理解它,這里是我們解釋服務器消息的代碼: MessageTokenHandler.cs
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.