2009-07-10 8 views
1

マージレプリケーションを使用してローカルSQL Expressをネットワーク上の中央SQL Serverと同期させるwinformプログラムがあります。このアプリの性質上、同期プロセスはアプリの起動時と終了時に自動的に実行されます。私がそれをやっているところ(下)はかなり時間がかかるようです。何がより速い方法でしょうか?SQL Serverが使用可能かどうかを確認する最速の方法

サーバが利用可能だがSQLがダウンしているようなエッジケースには穴を開けることができますが、サーバ自体をチェックしても大丈夫でしょう。代わりに、多分私たちのドメインが利用可能かどうかをチェックすることは、私が推測する同じ穴を残す可能性があります。

ありがとうございます!追加の注意点としては

private static bool IsSqlAvailable() 
    { 
     try 
     { 
      var conn = new SqlConnection("Data Source=WWCSTAGE;Initial Catalog=Connect;Integrated Security=True"); 
      conn.Open(); 
      conn.Close(); 
      HUD.IsSQLAvailable = true; 
      return true; 
     } 
     catch (Exception) 
     { 
      HUD.IsSQLAvailable = false; 
      return false; 
     } 
    } 

。上記は、オフネットワークの場合に特に遅いです。私はConnection Timeout = 1を設定していて、かなりの時間この時点でまだ座っています。

+1

接続タイムアウトを1秒に設定していて、まだ失敗するまでに時間がかかる場合は、接続試行が原因ではない可能性があります。それはDNSルックアップですか?接続タイムアウトに関する興味深い情報については、http://www.eggheadcafe.com/conversation.aspx?messageid=31241642&threadid=31241641を参照してください。 – Jacob

答えて

2

あなたのコントロールから外れているものの存在/接続性をチェックしているこのようなシナリオでは、いつものアドバイスはありません。

あなたの小切手は合格することができますし、後で瞬時に結果は真です。だから、SQLサーバが利用可能であると仮定して、あなたがやりたいことを何でもやろうとして、避けられないエラーをうまく処理してください。

+0

それ以外は私のスピードの問題には答えません。同期処理を実行しようとすると、正常にエラーが出るのを待っていると、ユーザーの負荷が非常に遅くなります。私がSyncを実行していて、LoadとClose以外の場所で私があなたに同意するかもしれないが、私がそうではないとしても、私はそうではない。 回答ありがとうございます。 –

+0

@パラディン - さて、あなたは、オープンとクローズが遅い(チェックが合格したがサーバーが消えたので)、そのために準備が整っていることを理解している限り、 (私は、オープンではできるだけバックグラウンドスレッドで同期を行い、バックグラウンドで同期を定期的に行うことをお勧めします) –

3

私は接続節を使用節で折り返し、おそらく接続文字列(通常はサーバーが起動している場合はデフォルトよりも早く接続する必要があります)で接続タイムアウトを低くしますが、それ以外は問題ありません。

0

これはあまりにも難しいかもしれません。 SQLサーバーの可用性は、基本的にはそれに接続できることと同じです。したがって、接続を開く方法は非常に有効です。私の唯一の提案は、IsSqlAvailable()の内部に2回代入するのではなく、既に戻り値を取得しているので、メソッドを呼び出す場所にHUD.IsSQLAvailableを一度割り当てることです。

0

私は今、仕事場で書いているアプリでテスト接続方法を書いています。

私はちょうどconnection.openとconnection.closeで単純なtry catchメソッドを使い、失敗した場合に例外をキャッチします。あなたがそれを必要としないならば、変数を設定する必要はありません。 trueまたはfalseを返すだけです。接続が失敗すると、数秒間ハングします。

2

私はSQL ServerのTCPポートに問い合わせることができると思います。 しかし、名前付きインスタンスを使用すると問題が発生します。

関連する問題