2017-05-09 86 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

相關問題