0

私は、多くの異なるデータベース間で毎晩データを処理する本質的に長いバッチ プロセスである C# コンソール アプリケーションを持っています。この種のプログラムの開始時に基本的なデータベース接続をテストするための適切な、または推奨される方法は何ですか? 接続の 1 つで期限切れのデータベース パスワードが例外処理によってキャッチされるという問題に遭遇しましたが、最初に基本的な接続をテストしたいと考えています。

単純な SELECT クエリで十分ですか、それとも多数のデータベースに対してこれを行うより効率的な方法はありますか?

4

4 に答える 4

3

私見の最も簡単な方法は、データベースに接続しようとすることです。失敗した場合はあきらめます。
夜間バッチを実行しているため、すぐに理由を理解して解決することは重要ではありません。
だから、このようなもの

using(SqlConnection conn = new SqlConnection(connectionString))
{
    try
    {
        conn.Open();
        // Do what you please here        
    }
    catch (Exception ex)
    {
        // Write error to file
        File.Append(..., 
            DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + " " + 
            ex.Message);
    }
    finally 
    { 
        conn.Close();
    } 
}

翌朝、ファイルのエラーを確認できます...

于 2012-04-13T12:47:56.077 に答える
0

パスワードをテストするには、接続を開く (そして閉じる) だけで十分です。ただし、db-user が特定のテーブルにアクセスする権限を持っているかどうかはわかりません。

于 2012-04-13T12:53:57.740 に答える
0
'Connection.open` 

db に接続できるかどうかを判断する簡単な方法です。

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
}

番号 18487 または 18488 の SqlException が発生した場合は、パスワードが変更されたことを示します。

Connection.changePassword

于 2012-04-13T12:52:31.657 に答える
0

クエリを実行する必要はありません。接続文字列を渡す SqlConnection を使用する場合、接続を Open() しようとするだけで、接続できない場合は例外が発生します。

try
{
    var cnn = new SqlConnection(connectionString);
    cnn.Open();
}
catch
{
   // connection failed, do something
}
于 2012-04-13T12:52:50.100 に答える