[c#] Pobranie nazwy instancji serwera sql


(Snajper(18)) #1

Witam

Potrzebuję sposobu na pobranie nazwy instancji zainstalowanych lokalnie instancji serwera sql. Obecnie według MS SQL Management Studio mam zainstalowane 3 serwery(instancje):

komputer-name\SQLEXPRESS,

komputer-name,

komputer-name\instancjaSQL.

Znalazłem sposób aby pobrać nazwy serwerów przez wiersz poleceń "osql -L" lub "sqlcmd -L". Niestety ten sposób nie działa, ponieważ na komputerze nie ma zainstalowanej usługi SQL SERWER BROWSER, a cmd wywala odpowiwedni komunikat:

"Nazwa sqlcmd nie jest rozpoznawana jako polecenie wewnetrzne lub zewnetrzne program wykonywalny lub plik wsadowy"

Próbowałem też innego sposobu (kod poniżej) lecz i ten sposób nie działa, ponieważ wypluwa tylko instancje sieciowe bez lokalnych.

DataTable dt = SqlDataSourceEnumerator.Instance.GetDataSources();


                    int i = 0;


                    foreach (DataRow dr in dt.Rows)

                    {

                        if (string.Concat(dr["InstanceName"]).Equals(""))

                        {

                            tab[i] = (string.Concat(dr["ServerName"]));

                        }

                        else

                        {

                            tab[i] = (string.Concat(dr["ServerName"], "\\", dr["InstanceName"]));

                        }

                        i++;

                    }

Można szukać tych danych w rejestrze ale wszędzie gdzie jest to opisane jak to zrobić napisane jest również o tym aby tego nie robić w ten sposób. Więc w jaki sposób to zrobić ?

Usługa SQL SERWER BROWSER nie jest zainstalowana na komputerze, na którym to pobieranie nazw ma działać.