2017-05-09 1 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について話しています。データベース名を見つけるその他のオプションは、現在のDB接続に合わせてエラー例外をカスタマイズすることです(コードの背後) –

答えて

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

関連する問題