Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.51 MB
Время: 0.042 c
2-1142781071
Andrey.Ru
2006-03-19 18:11
2006.04.02
Помогите Mpeg2!!!!!!


2-1142951073
Dest81
2006-03-21 17:24
2006.04.02
BDE


15-1141848603
Nic
2006-03-08 23:10
2006.04.02
Машина студента developer a


1-1141213505
Aleksandr.
2006-03-01 14:45
2006.04.02
Что случилось с GetHeapStatus?


2-1141726763
nap<>
2006-03-07 13:19
2006.04.02
UPX