#c# #sql-server #ado.net
#c# #sql-сервер #ado.net
Вопрос:
Работа на C #, в одном из моих приложений мне нужно получить имена SQL Server. В сети у меня есть SQL Server 2000, 2005, 2008. Для моего приложения я хочу получить имена серверов.
private string strConnection = @"Data Source=xxx;Initial Catalog=xxx;Integrated Security=True";
SqlConnection objConnection = new SqlConnection(strConnection);
objConnection.Open();
SqlCommand objCommand = new SqlCommand(“xxxxxxx”);
objCommand.ExecuteNonQuery();
objConnection.Close();
Если я знаю strConnection
, то я могу использовать приведенный выше синтаксис. Но я не знаю имени сервера. В моем приложении сначала мне нужно знать имя сервера. Мне нужна помощь, чтобы получить имена серверов.
Ответ №1:
Существует довольно много вариантов, как найти их в коде — см.:
- Найдите экземпляры SQL Server в локальной сети — использует протокол UDP и сокеты для поиска SQL Server в локальной сети
- Перечисление экземпляров SQL Server (ADO.NET ) — использует ADO.NET и a
SqlDataSourceEnumerator
для поиска SQL-серверов и возвращает aDataTable
с информацией о них
Существует еще несколько способов найти ваши SQL-серверы — работают ли эти варианты для вас??
Комментарии:
1. 1 ADO.NET класс полезности очень хороший. Я думал о nmaping, а что нет. 🙂
Ответ №2:
Взгляните на Scan network для экземпляров SQL Server, чтобы получить некоторые идеи о SQL Ping
Ответ №3:
Вы можете использовать использовать SmoApplication.Метод EnumAvailableSqlServers для перечисления списка доступных экземпляров SQL Server.
Комментарии:
1. Работает, но для этого требуется наличие SMO, что означает: а) либо установить клиентские инструменты SQL Server с помощью SMO, либо б) установить SMO отдельно.