2009-03-05 13 views
2

システムの起動時に実行され、ローカルSQL Server 2005インストールと通信する必要のあるアプリケーションがあります。 ServiceControllerクラスを使用して「実行中」の状態になるのを待っています。ほとんどの場合、これは正常に動作します。しかし、時にはコールドブート時に、私の最初のクエリが失敗し、現在のユーザーにログオンできなかったというメッセージが表示されます。SQL Serverが開始され使用できる状態になっていることを確認するにはどうすればよいですか?

競合状態のように聞こえるが、私はWaitForStatusコールがそれを解決すると考えていた。

本当に本当に実行中であることを確認する良い方法はありますか?私はちょうど余分な睡眠を投げ、それが十分に長いと仮定する必要がありますか?

答えて

3

あなたはいつもthe System.Data.Sql.SqlDataSourceEnumeratorを使用して、ローカルインスタンスをチェックすることができます。

プラスでは、列挙子でバージョン情報を検出することもできます。

+0

これを最初に試してみます。ありがとう! – Coderer

6

あなただけの例外をキャッチし、それが動作するまで再試行可能性が...

+1

「本当に本当に実行している」ことを伝える最良の方法は、クエリを実行してこれを最適なオプションにすることです。 –

+0

このソリューションは、テストで私にとってうまくいくようです。イベントビューアには、「SQL Serverは新しいクライアント接続を受け入れる準備ができていません」と表示されます。エラーエントリが表示されますが、一旦サーバーがオンラインになると、プログラムは正常に動作します。 – ADH

関連する問題