У меня есть приложение winform, которое должно быть в курсе, когда SQL-сервер доступен, чтобы разрешить функциональность Merge Syncing. Я пробовал варианты ниже, которые работают один раз, но я хотел бы придумать что-то более динамичное.Мониторинг состояния сети в режиме реального времени. Какие события поднимаются?
Подходящий функционал (спасибо Alex_L) проверяет порт 1433, на котором работает SQL, и работает отлично. То, что я пытаюсь выполнить, - это способ отслеживать это в режиме реального времени. Должен ли я создать службу Windows? Как насчет каких-либо других сетевых событий, таких как изменение сетевого соединения?
Использование этого связанного приложения просто. Если они находятся в нашей сети, то доступна часть репликации слияния. Если они не в нашей сети, то это не так. SQL Server никогда не должен быть доступен для нашей сети, и он ДОЛЖЕН всегда быть доступен, когда включен.
Это, как говорится, я буду открыт для решений, связанных с обнаружением нашей текущей сети вместо экземпляра SQL.
private static bool IsSqlAvailable()
{
TcpClient tcpc = new TcpClient();
try
{
tcpc.Connect("10.250.50.30", 1433);
return true;
}
catch
{
return false;
}
}
Спасибо, я этого не знал. Нет никакого способа контролировать это в режиме реального времени? Мне нужно будет периодически проверять это вручную, чтобы «имитировать» реальное время? –
Как я думаю, самый простой способ (и, как я делаю в моих проектах) - написать службу Windows. Эта небольшая служба проверяет наличие SQL-серверов (используя класс Timer) и отправляет сообщения соответствующим администраторам. –