SqlException:我可以获取数据库名称吗?

时间:2017-05-09 08:03:17

标签: c# sql-server exception-handling

我有一个异常日志记录服务,由各种系统使用。它被赋予一个例外,它从中提取和存储有用的信息。

如果异常是SqlException,那么它会提取额外的详细信息,例如“服务器”属性(即SQL Server实例)以及存储过程名称和行,以帮助诊断。

但我无法在那里找到“数据库名称”,这有助于明确错误发生的位置。谁能告诉我它在哪里?

我知道SQL不是特定于SQL Server的;但是SqlException是特定于SQL Server的,所以它应该存在于某个地方..

P.S。以某种方式改变每一段SQL以不同方式抛出不是一种选择。并且都不会更改异常来自的C#代码。我必须使用的只是内存中的SqlException对象。

1 个答案:

答案 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};
}