AseConnection InfoMessage 返回打印语句作为错误消息
AseConnection InfoMessage returning print statement as an error message
我在 Sybase ASE 15.7 中工作,我正在尝试 return 来自 T-SQL 的消息,如下所示。我正在使用 AseConnection.InfoMessage 事件处理程序从数据库中捕获消息。它工作正常,但它也 return 打印语句作为 AseError 消息。为什么会发生这种情况,我该如何纠正?
控制台输出:
Log: 12522 rows in SomeTable
AseError Log: 12522 rows in SomeTable
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 version。该项目的目标之一是 drop-in 替代 SAP/Sybase 的驱动程序 - 因此我们复制了上述设计决策 - 虽然很奇怪。
严重性 >10
被视为错误。否则,它被认为是信息性的。如果它能帮助您理解它,这里是我们解释服务器消息的代码:MessageTokenHandler.cs
我在 Sybase ASE 15.7 中工作,我正在尝试 return 来自 T-SQL 的消息,如下所示。我正在使用 AseConnection.InfoMessage 事件处理程序从数据库中捕获消息。它工作正常,但它也 return 打印语句作为 AseError 消息。为什么会发生这种情况,我该如何纠正?
控制台输出:
Log: 12522 rows in SomeTable
AseError Log: 12522 rows in SomeTable
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 version。该项目的目标之一是 drop-in 替代 SAP/Sybase 的驱动程序 - 因此我们复制了上述设计决策 - 虽然很奇怪。
严重性 >10
被视为错误。否则,它被认为是信息性的。如果它能帮助您理解它,这里是我们解释服务器消息的代码:MessageTokenHandler.cs