2012-04-13 15 views
0

私はC#Consoleアプリケーションを使用しています。これは基本的に、さまざまなデータベース間で夜間にデータを処理するロングバッチ処理です。このタイプのプログラムの初めに、基本的なデータベース接続をテストするための適切な、または好ましい方法は何ですか?私は、例外処理によって捕捉された自分の接続のデータベースパスワードが期限切れになってしまったという問題に遭遇しましたが、私は最初から基本的な接続性をテストしたいのです。C#コンソールアプリケーションでのデータベース接続のテスト

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

答えて

4

IMHO最も簡単な方法はデータベースに接続しようとしていますが、失敗した場合は諦めます。
夜間バッチを実行しているときは、理由をすぐに理解して解決することは重要ではありません。あなたはエラーのファイルをチェックすることができ、この

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(); 
    } 
} 

次の朝のような
だから、何か...

+1

@ OlivierJacot-Descombes:私は理解していない...私の答えは何が間違っていますか? – Marco

+0

答えは私にはうまく見えます。サイドノート: 'conn'Close()を' using'ステートメントで囲む必要がありますか? –

+0

@ShawnH:わからない、テストしなければならない。私は答えを投稿する時には不思議に思っていましたが、私は確信が持てません...まあ、それが閉じていることを確認する方が良いです! :) – Marco

0
'Connection.open` 

あなたはデシベルかに接続できるかどうかを判断する簡単な方法です。

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

あなたが数18487または18488でSQLExceptionを取得した場合には、パスワードが変更されたことを示します。

​​

0

あなたは、任意のクエリを実行する必要はありません。 あなたは、接続文字列を渡すSqlConnectionオブジェクトを使用する場合は、あなただけの(開くしようとすることができます)接続し、 何かのように接続できない場合は、例外を取得します:

try 
{ 
    var cnn = new SqlConnection(connectionString); 
    cnn.Open(); 
} 
catch 
{ 
    // connection failed, do something 
} 
0

オープニング(その後、クローズ)の接続をパスワードをテストするのに十分なはずです。ただし、db-userに特定のテーブルにアクセスする権限がある場合は、これは意味しません。

関連する問題