Текущий архив: 2006.04.02;
Скачать: CL | DM;
ВнизКак лучше всего пинговать сервер? Найти похожие ветки
← →
Ega23 © (2006-02-08 15:06) [0]Нужно отслеживать наличие живого MS SQL сервера.
Теоретически, можно элементарный запросец к БД master написать, выполнять его время от времени и пытаться exception выловить.
Другие пути есть?
← →
Anatoly Podgoretsky © (2006-02-08 15:10) [1]Пинг ничего не дает, кроме того он обычно запрещен.
Надо именно делать соединение к базе.
← →
MOA © (2006-02-08 15:17) [2]Можно дополнительно попробовать настроить Alert на Fatal Error, чтобы Agent автоматически отсылал сообщение об ошибках. Естественно, для этого нужна живая ОС агента - так что этот вид ошибок не отловится ;(. Хотя агент может мониторить и сервер на "чужом" компьютере...
← →
Ega23 © (2006-02-08 15:20) [3]
> Надо именно делать соединение к базе.
Я, пожалуй, не совсем точно выразился. Сама команда PING меня не интересует, т.к. комп может в сети присутствовать, а сам сервер при этом может быть остановлен.
Интересует именно проверка в реальном времени наличия определённой БД на определённом сервере.
Пока я себе это представляю так:
1. Завожу отдельный поток.
2. Настраиваю в его рамках отдельный коннект к БД.
3. С какой-то частотой "дёргаю" запрос, что-то типаSelect Top 1 Name from sysobjects
4. Проверяю результат запроса.
5. Ну и try - except на открытие, конечно.
Интересует мнение коллег по цеху - правильной дорогой иду, или есть другие более пристойные варианты?
← →
YuRock © (2006-02-08 16:08) [4]Ну,
Select Top 1 1 from sysobjects
- так мож. лучше будет :)))
← →
Sergey13 © (2006-02-08 16:17) [5]2 [3] Ega23 © (08.02.06 15:20)
А как ты это знание о работоспособности собираешься использовать?
← →
Ega23 © (2006-02-08 16:46) [6]
> А как ты это знание о работоспособности собираешься использовать?
А это одно из тербований к ПО: есть некий удалённый сервер БД, с которого нужно брать некую дополнительную информацию. При этом изображение активности сервера должено быть выведено на панель состояний.
И если сервер по какой-то причине отвалился - должна поизойти тревога.
← →
Sergey13 © (2006-02-08 16:53) [7]2[6] Ega23 © (08.02.06 16:46)
> А это одно из тербований к ПО
Ну тогда понятно.
← →
Anatoly Podgoretsky © (2006-02-08 17:00) [8]Ega23 © (08.02.06 15:20) [3]
Ну правильно, только пункт 4 лишний, достаточно пункта 5
Кроме try except также нужен try finally
← →
Ega23 © (2006-02-09 09:01) [9]
> Anatoly Podgoretsky © (08.02.06 17:00) [8]
>
> Ну правильно, только пункт 4 лишний, достаточно пункта 5
> Кроме try except также нужен try finally
ОК, спасибо...
← →
paul_k © (2006-02-09 10:43) [10]и для проверки наличия БД дергать сначала
master.sysdatabases
(проверить наличие самой БД) а потом ужеsysobjects
в проверяемой базе.
← →
Ega23 © (2006-02-09 10:55) [11]
> и для проверки наличия БД дергать сначала master.sysdatabases
> (проверить наличие самой БД) а потом уже sysobjects в проверяемой
> базе.
>
Ну это уже лишнее. Если не смог на базу законнектиться, то тут уже проверяй-непроверяй, всё равно швах.
← →
paul_k © (2006-02-09 11:05) [12]а если базы нетути то и нечего к ней конектится так?
> Если не смог на базу законнектиться
а не смог законектится почему? сервер в дауне? базы нет? или база в дауне? или уборщица пылесосом шнурок сетевой выдернула?
← →
paul_k © (2006-02-09 11:07) [13]с другой стороны, у юзера от имени которого проводится проверка, как правило нет прав на "мастер"
← →
Ega23 © (2006-02-09 11:11) [14]
> а не смог законектится почему? сервер в дауне? базы нет?
> или база в дауне? или уборщица пылесосом шнурок сетевой
> выдернула?
>
try
ADOConnection.Connected:=True;
except
ShowMessgae("Сервер в дауне")
Exit;
end;
aqPing.Connection:=ADOConnection;
aqPing.SQL.Text:="Select Top 1 Name from sysobjects";
и пошёл поток на пинг каждую секунду:
try
aqPing.Open;
except
ShowMessage("Сервер отвалился");
end;
Что-то типа этого...
← →
Ega23 © (2006-02-09 11:12) [15]
> с другой стороны, у юзера от имени которого проводится проверка,
> как правило нет прав на "мастер"
У нас серверная идентификация пользователей, а не смешанная.
← →
paul_k © (2006-02-09 11:16) [16]и усер может из master.sysdatabases получить данные запросом? или этот усер - разработчик?
каждую секунду не слишком часто ли?
попытка конекта к "отвалившейся" базе/серверу может занимать намного больше
← →
Ega23 © (2006-02-09 11:20) [17]
> и усер может из master.sysdatabases получить данные запросом?
> или этот усер - разработчик?
Да не из master. Я коннект-то на вполне определённую базу настраиваю.
Страницы: 1 вся ветка
Текущий архив: 2006.04.02;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.041 c