簡體   English   中英

AseConnection InfoMessage 將打印語句作為錯誤消息返回

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM