エラーをよりよくログに記録し、アプリケーションのどこで障害が発生しているかを判断するために、エラーをより良い方法でconnection.openにトラップする方法を探しています。SQL接続が失敗した場合のトラップエラーの詳細
私はtry catchを使用しており、捕捉された例外を記録していますが、実際にどの接続が失敗しているかを知ることが欲しいです。私のアプリケーションは、70台のサーバーを繰り返し、別のデータベースのデータを集約しています。
エラーをよりよくログに記録し、アプリケーションのどこで障害が発生しているかを判断するために、エラーをより良い方法でconnection.openにトラップする方法を探しています。SQL接続が失敗した場合のトラップエラーの詳細
私はtry catchを使用しており、捕捉された例外を記録していますが、実際にどの接続が失敗しているかを知ることが欲しいです。私のアプリケーションは、70台のサーバーを繰り返し、別のデータベースのデータを集約しています。
SqlException例外の型をキャッチすると、接続の試行に固有の情報が必要です。 .Numberのようなプロパティは、SQLエラー番号を返します。なぜなら、接続が失敗した理由に関する情報を提供するはずです。
ちょうど暗闇の中でのショット。あなたがSqlExceptionを捕まえたら、そのErrorsコレクションを反復する必要があります。コレクション内のSqlErrorオブジェクトには、SqlError.Serverなどの追加のプロパティがあり、必要なものを正確に提供します。
エラーの発生したSQL サーバーのインスタンスの名前を取得します。
collecitonは、コマンド(SQLバッチ)が生成されたすべてのエラーをretrunsので、単一のSQLExceptionのよりSQLERRORオブジェクトが存在する場合があります。コレクション内の最初のSqlErrorは、SqlExpcetion自体の情報と(エラーメッセージ内で)対応しているため、ある意味では重複しています。私のエラー報告では、私は完全にSqlException情報を無視し、より完全なので、SqlError情報とレポートの後に常に行くことを前提にしています。
{
...
foreach(var connectionString in connectionStrings)
{
try
{
using (var cnn = new SqlConnection())
{
cnn.Open();
}
}
catch (SqlException)
{
Log(string.Format("Failed to open connection '{0}'.", connectionString));
}
}
...
}
あなたはどの言語を使用していますか? –
connection.openを呼び出す関数を投稿すると、すばらしい応答が得られるはずです。 –