我有一个异常日志记录服务,由各种系统使用。它被赋予一个例外,它从中提取和存储有用的信息。
如果异常是SqlException,那么它会提取额外的详细信息,例如“服务器”属性(即SQL Server实例)以及存储过程名称和行,以帮助诊断。
但我无法在那里找到“数据库名称”,这有助于明确错误发生的位置。谁能告诉我它在哪里?
我知道SQL不是特定于SQL Server的;但是SqlException
是特定于SQL Server的,所以它应该存在于某个地方..
P.S。以某种方式改变每一段SQL以不同方式抛出不是一种选择。并且都不会更改异常来自的C#代码。我必须使用的只是内存中的SqlException
对象。
答案 0 :(得分:0)
默认SQLException没有数据库名称的属性
它有一个SQLErrors的集合,我认为这是你从中获取存储过程等的地方。这确实包含有关错误的更多信息,但同样不会存储数据库名称。
您可以查看自定义错误异常:
e.g。
public class MySqlException : DbException
{
public string Database { get; set; }
}
SqlConnection conn;
try
{
}
catch (SqlException ex)
{
throw new MySqlException() {Database = conn.Database};
}