Сведения о вопросе

Fhohir

00:37, 26th August, 2020

Теги

c#   sql-server    

Определение того, работает ли сервер SQL

Просмотров: 461   Ответов: 6

Я ищу способ опросить различные серверы и проверить, что SQL сервер запущен и работает. Я пишу свой код в C#. я не особенно забочусь об отдельных базах данных, просто сервер SQL работает и реагирует.

Есть какие-нибудь идеи?



  Сведения об ответе

screen

07:42, 22nd August, 2020

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

Чем элегантнее (но сложнее... разве это не всегда так?) решением было бы использовать WMI для подключения к удаленной машине и выяснить, запущен ли процесс сервера SQL.


  Сведения об ответе

lesha

20:26, 6th August, 2020

System.Data.Sql.SqlDataSourceEnumerator вернет все экземпляры SQL сервера, запущенного в данный момент.
MSDN ссылка


  Сведения об ответе

davran

03:43, 3rd August, 2020

SqlDataSourceEnumerator дает вам все экземпляры,но они не обязательно работают. Для локальных экземпляров SQL можно использовать объект ServiceController, пространство имен System.ServiceProcess. Имя службы-это объединение "MSSQL$" и "InstanceName" из SqlDataSourceEnumerator. Установите свойство ServiceName объекта ServiceController, и вы можете проверить свойство "Status" - остановлено, запущено, отложено и т. д. Следовательно, вы можете отфильтровать "Running" из них


  Сведения об ответе

SSESION

07:45, 18th August, 2020

Используйте класс TCPClient для создания универсальной функции, которая соединяется в TCP с заданным адресом IP.

Затем пройдите по списку серверов, которые вы хотите протестировать, и попробуйте открыть соединение с портом 1433.


  Сведения об ответе

padenie

09:37, 15th August, 2020

Если вам нужны конкретные серверы, используйте WMI. Если вам просто нужны все доступные серверы:

http://support.microsoft.com/kb/q287737/


  Сведения об ответе

fo_I_K

15:14, 5th August, 2020

Я бы, конечно, согласился с ответом Винсента. Просто убедитесь, что вы закрываете и правильно размещаете соединения tcp и т. д. WMI кажется мне немного излишним, если это все, что вам нужно.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться