2009-08-26 47 views
0

エラーをよりよくログに記録し、アプリケーションのどこで障害が発生しているかを判断するために、エラーをより良い方法でconnection.openにトラップする方法を探しています。SQL接続が失敗した場合のトラップエラーの詳細

私はtry catchを使用しており、捕捉された例外を記録していますが、実際にどの接続が失敗しているかを知ることが欲しいです。私のアプリケーションは、70台のサーバーを繰り返し、別のデータベースのデータを集約しています。

+0

あなたはどの言語を使用していますか? –

+0

connection.openを呼び出す関数を投稿すると、すばらしい応答が得られるはずです。 –

答えて

0

SqlException例外の型をキャッチすると、接続の試行に固有の情報が必要です。 .Numberのようなプロパティは、SQLエラー番号を返します。なぜなら、接続が失敗した理由に関する情報を提供するはずです。

0

ちょうど暗闇の中でのショット。あなたがSqlExceptionを捕まえたら、そのErrorsコレクションを反復する必要があります。コレクション内のSqlErrorオブジェクトには、SqlError.Serverなどの追加のプロパティがあり、必要なものを正確に提供します。

エラーの発生したSQL サーバーのインスタンスの名前を取得します。

collecitonは、コマンド(SQLバッチ)が生成されたすべてのエラーをretrunsので、単一のSQLExceptionのよりSQLERRORオブジェクトが存在する場合があります。コレクション内の最初のSqlErrorは、SqlExpcetion自体の情報と(エラーメッセージ内で)対応しているため、ある意味では重複しています。私のエラー報告では、私は完全にSqlException情報を無視し、より完全なので、SqlError情報とレポートの後に常に行くことを前提にしています。

0
{ 
    ... 
    foreach(var connectionString in connectionStrings) 
    { 
     try 
     { 
      using (var cnn = new SqlConnection()) 
      { 
       cnn.Open(); 
      } 
     } 
     catch (SqlException) 
     { 
      Log(string.Format("Failed to open connection '{0}'.", connectionString)); 
     } 
    } 
    ... 
} 
関連する問題