Найти все экземпляры сервера SQL программно

Я знаю что тамДовольно много тем, похожих на этот, но ни один из них не дал правильного ответа, который я ищу.

Я изо всех сил пытаюсь собрать все экземпляры SQL-Server в нашей сети. Он должен быть в состоянии определить, какая версия SQl-Server запущена. Разные версии, которые мы используем, различаются между ''SQL Server 2000 а также ''SQL Server 2008 R2

Чтобы дать вам небольшую справочную информацию, в настоящее время я занимаюсь разработкой в нашей локальной сети, но позже она будет работать на наших серверах для сбора информации.

Часть собранной информации:

пулы приложенийинсталляции iisвсе базы данных на сервереи еще кое-что как это

Все это работает без проблем через запросы WMI. Но я не могу получить правильные экземпляры SQl-Server с помощью WMI или пространств имен в Visual Studio 2010.

Некоторые из вещей, которые ямы пробовали в соответствии с другими решениями, найденными вокруг stackoverflow и других сайтов:

WMI, используя различные пространства имен, такие какroot\\Microsoft\\SqlServer\\ComputerManagement10 сServerSettings учебный класс. Но это дает только SQLSERVER и SQLEXPRESS без номера версии. Делать это вроде бесполезным.Я тоже пробовалroot\\CIMV2 Win32_Product в том числе, где, как SQL предложение Но это возвращает гораздо больше данных, чем просто то, что я ищу. Кроме того, сам запрос очень медленный.Позже я нашел некоторые классы в Visual Studio, такие какSqlDataSourceEnumerator например. Хотя это работает, только если определенная служба работает и некоторые порты открыты. Что мы предпочтительно не делаем из-за возможных проблем безопасности и возможных неправильных данныхЯ также видел, как некоторые люди ссылались на некоторые другие пространства имен (напишу их здесь, как только я снова их найду), но msdn заявил, что эти пространства имен мысобирается быть удаленным в ближайшем будущем.

Подводя итог: мне нужно получить все установленные экземплярыSQL-Server в домене с версиями от 2000 до 2008 R2.

Ответы на вопрос(2)

Ваш ответ на вопрос