2011-09-09 7 views
1

私は自分のPCでSQL Serverインスタンスを実行しようとしています。SQL Serverインスタンスが常に列挙に表示されないのはなぜですか?

SqlDataSourceEnumerator instance = SqlDataSourceEnumerator.Instance; 
DataTable table = instance.GetDataSources(); 
foreach (DataRow row in table.Rows) 
{ 
    SqlInstanceCollection.Items.Add(row["ServerName"].ToString() + "\\" + row["InstanceName"].ToString()); 
    SqlInstanceCollection.Text = SqlInstanceCollection.Items[0].ToString(); 
} 

私が直面している問題は、サーバーが動作しているときでも時々私がインスタンスを取得することがあることです。

実行中のSQL Serverのインスタンスのリストを取得するにはどのくらいの時間が必要ですか?

ご協力いただきますようお願い申し上げます。 MSDNから

+0

[sql browser service](http://msdn.microsoft.com/en-us/library/ms181087.aspx)が実行されている場合、コードによって実行中のインスタンスが検出されるかどうかに影響しますか? – billinkc

答えて

4

:原因 にSqlDataSourceEnumeratorが使用するメカニズムの性質に

メソッドは常に使用可能なサーバーの 完全なリストを返さない、ネットワーク上のデータソースを検索し、リストすべての通話で同じように ではない可能性があります。この機能を使用してユーザーに をリストから選択させる場合は、サーバーに 列挙型がすべて返されない場合には、リストにない名前を入力するために常に オプションを指定する必要があります利用可能なサーバーまた、 このメソッドは実行にかなりの時間がかかることがありますので、パフォーマンスが重大な場合は を呼び出してください。

SqlDataSourceEnumerator.GetDataSources Method

自分のノートに述べたように、この方法は、設計により、信頼できないです;)不思議な!

EDIT:同様の問題を解決しなければならない場合は、適切なパラメータセットを使用してWindows API NetServerEnumを使用しようとします。本当に些細なことではありませんが、より信頼性の高いものにする必要があります。

+0

この仕事を達成する別の方法をお勧めしますか? –

+0

NetServerEnumをより信頼できる方法として使用することをお勧めします。 –

関連する問題