C# : проблема с SqlDataSourceEnumerator.Пример.GetDataSources()
Привет
Я пытаюсь включить все экземпляры SQL Server (локальные и сетевые) в ComboBox, используя следующий код:
DataTable dt = null; dt = System.Data.Sql.SqlDataSourceEnumerator.Instance.GetDataSources(); foreach (DataRow dr in dt.Rows) { ComboBox1.Items.Add(dr[0].ToString() + "\\" + dr[1].ToString()); }
Он прекрасно работает на 32-битной Windows XP, 64-битной Windows 7, заручившись всеми моими локальными и сетевыми экземплярами sql server в комбо, но когда этот фрагмент кода запускается на 32-битной Windows 7 (все профессиональные версии), требуется много времени, чтобы получить сведения об экземпляре, и в конечном итоге не удается заручиться даже одним экземпляром (что, как я полагаю, связано с каким-то таймаутом). В таблице данных в этом случае нет ни одной строки. Таким образом я хочу задать следующие вопросы:
1. Является ли эта проблема специфичной для платформы или ОС?
2. Действительно ли это связано с низкой скоростью сети/ большим количеством экземпляров сервера в сети?
3. Существует ли какая-либо альтернатива этому требованию, которая не зависит от платформы или фреймворка, как
SmoApplication.EnumAvailableSqlServers(false); // local and Network SQL instances
это должна найти зависимые.
У меня есть по крайней мере 17-20 сетевых серверов SQL Server, которые я ожидаю, что эта функция вернется. Поэтому я не могу понять, как это могло произойти? Я сталкиваюсь с этой проблемой именно на Windows 7 32bit (профессиональная версия).
Спасибо
Хемант Джайсвал