2017-05-09 82 views
0

我有一个异常日志服务,由各种系统使用。它有一个例外,它从中提取有用的信息,并存储。SqlException:我可以获取数据库名称吗?

如果例外是SqlException,那么它会提取额外的详细信息,如'Server'属性(这是SQL Server实例)和存储过程名称和行,以帮助诊断。

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

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

P.S.改变每一块SQL以某种方式抛出不同是不是一种选择。并且不会更改异常来自的C#代码。我需要处理的是内存中的SqlException对象。

+0

*我知道,SQLCLIENT不是特定于MS-SQL *,很好,这是... –

+0

@PatrickHofman感谢澄清......这使我更加希望它*应*在那里。我相应地编辑了我的帖子。 – Richardissimo

+0

您正在讨论默认的SQLException ..查找数据库名称的其他选项是根据您当前的数据库连接来定制您的错误异常。(代码隐藏) –

回答

0

默认SQLException对数据库名称

它确实有SQLErrors集合没有财产,我相信在这里你都可以从存储过程等。这确实包含有关错误的更多信息,但又不存储数据库名称。

你可以看一下自定义错误异常:

例如

public class MySqlException : DbException 
{ 
    public string Database { get; set; } 
} 

SqlConnection conn; 
try 
{ 

} 
catch (SqlException ex) 
{ 
    throw new MySqlException() {Database = conn.Database}; 
} 
+0

对不起,@Scrobi,我在问题中明确指出,更改异常来自的C#代码不是一个选项。 – Richardissimo

+0

对不起在您的问题结束时错过了P.S。 – Scrobi

相关问题