SQL Server 2008 R2のローカルインストールを使用してローカルマシン上で主に実行されるSQL Server(2008 R2)ベースの(C#WinForms)アプリケーションがあります。私が持っている問題の1つは、ユーザーがサーバーインスタンスを実行しておらず、いくつかのコマンドを実行しようとしたり、いくつかの操作を実行しようとすると、クエリがSQL Serverに送信され、要求されたインスタンスを教えてくれる年です。始まっていない。SQL ServerインスタンスがCで実行されているかどうかを効率的にテストする方法
私は以下を読んでいますquestion and associated answersしかし、これらのソリューションは理想とはかけ離れています。 WMIは非常に過剰に殺されているようで、ソフトウェアのインストールパッケージに余分な.dllファイルを含める必要がないようにしたい場合は避けてください。私もSqlDataSourceEnumerator
クラスaccrossに来ている
はDataTable
に利用可能な接続をダンプhere
// Retrieve the enumerator instance and then the data.
SqlDataSourceEnumerator instance = SqlDataSourceEnumerator.Instance;
System.Data.DataTable table = instance.GetDataSources();
を記録しました。しかし、すべての利用可能な接続を返すに固有の問題があるようです:
"All of the available servers may or may not be listed. The list can vary depending on
factors such as timeouts and network traffic. This can cause the list to be different
on two consecutive calls." - MSDN.
は、この問題に対処するための設定方法がなければなりません。私は(これは非常に重要である)選択されたインスタンス(「localhost」の[既定のインスタンス]または「SomeInstanceName」)か否かのチェック効率的として使用することができるもの
Data Source=localhost;Initial Catalog=MyDB;Integrated Security=True;Connection Timeout = 0
:私は、次のSqlConnection
の文字列を持っていると言いますが走っています?
お時間をいただきありがとうございます。
そのインスタンスへの接続を開こうとすると、インスタンスが存在しないか利用できない場合は、例外をキャプチャしてそれに応じて処理できるはずです。 – mreyeros
はい、それはいくつかの状況で戻って来るためにサーバーの時間を取ることができます!乾杯。 – MoonKnight
[この質問](http://stackoverflow.com/questions/9287439/some-tricky-quickway-to-validate-oracle-db-connection/9288048#9288048)への回答を見てください。 Oracleについて質問していますが、SQLサーバーにも適用されます。 –