![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как лучше всего пинговать сервер? [MSSQL]
Ega23 © (2006-02-08 15:06:00)Нужно отслеживать наличие живого MS SQL сервера.
Теоретически, можно элементарный запросец к БД master написать, выполнять его время от времени и пытаться exception выловить.
Другие пути есть?
Ega23 (2006-02-09 11:20:00) [1]
> и усер может из master.sysdatabases получить данные запросом?
> или этот усер - разработчик?
Да не из master. Я коннект-то на вполне определённую базу настраиваю.
paul_k (2006-02-09 11:16:00) [2]и усер может из master.sysdatabases получить данные запросом? или этот усер - разработчик?
каждую секунду не слишком часто ли?
попытка конекта к "отвалившейся" базе/серверу может занимать намного больше
Ega23 (2006-02-09 11:12:00) [3]
> с другой стороны, у юзера от имени которого проводится проверка,
> как правило нет прав на "мастер"
У нас серверная идентификация пользователей, а не смешанная.
Ega23 (2006-02-09 11:11:00) [4]
> а не смог законектится почему? сервер в дауне? базы нет?
> или база в дауне? или уборщица пылесосом шнурок сетевой
> выдернула?
>
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;
Что-то типа этого...
paul_k (2006-02-09 11:07:00) [5]с другой стороны, у юзера от имени которого проводится проверка, как правило нет прав на "мастер"
paul_k (2006-02-09 11:05:00) [6]а если базы нетути то и нечего к ней конектится так?
> Если не смог на базу законнектиться
а не смог законектится почему? сервер в дауне? базы нет? или база в дауне? или уборщица пылесосом шнурок сетевой выдернула?
Ega23 (2006-02-09 10:55:00) [7]
> и для проверки наличия БД дергать сначала master.sysdatabases
> (проверить наличие самой БД) а потом уже sysobjects в проверяемой
> базе.
>
Ну это уже лишнее. Если не смог на базу законнектиться, то тут уже проверяй-непроверяй, всё равно швах.
paul_k (2006-02-09 10:43:00) [8]и для проверки наличия БД дергать сначала
master.sysdatabases(проверить наличие самой БД) а потом ужеsysobjectsв проверяемой базе.
Ega23 (2006-02-09 09:01:00) [9]
> Anatoly Podgoretsky © (08.02.06 17:00) [8]
>
> Ну правильно, только пункт 4 лишний, достаточно пункта 5
> Кроме try except также нужен try finally
ОК, спасибо...
Anatoly Podgoretsky (2006-02-08 17:00:00) [10]Ega23 © (08.02.06 15:20) [3]
Ну правильно, только пункт 4 лишний, достаточно пункта 5
Кроме try except также нужен try finally
Sergey13 (2006-02-08 16:53:00) [11]2[6] Ega23 © (08.02.06 16:46)
> А это одно из тербований к ПО
Ну тогда понятно.
Ega23 (2006-02-08 16:46:00) [12]
> А как ты это знание о работоспособности собираешься использовать?
А это одно из тербований к ПО: есть некий удалённый сервер БД, с которого нужно брать некую дополнительную информацию. При этом изображение активности сервера должено быть выведено на панель состояний.
И если сервер по какой-то причине отвалился - должна поизойти тревога.
Sergey13 (2006-02-08 16:17:00) [13]2 [3] Ega23 © (08.02.06 15:20)
А как ты это знание о работоспособности собираешься использовать?
YuRock (2006-02-08 16:08:00) [14]Ну,
Select Top 1 1 from sysobjects- так мож. лучше будет :)))
Ega23 (2006-02-08 15:20:00) [15]
> Надо именно делать соединение к базе.
Я, пожалуй, не совсем точно выразился. Сама команда PING меня не интересует, т.к. комп может в сети присутствовать, а сам сервер при этом может быть остановлен.
Интересует именно проверка в реальном времени наличия определённой БД на определённом сервере.
Пока я себе это представляю так:
1. Завожу отдельный поток.
2. Настраиваю в его рамках отдельный коннект к БД.
3. С какой-то частотой "дёргаю" запрос, что-то типаSelect Top 1 Name from sysobjects
4. Проверяю результат запроса.
5. Ну и try - except на открытие, конечно.
Интересует мнение коллег по цеху - правильной дорогой иду, или есть другие более пристойные варианты?
MOA (2006-02-08 15:17:00) [16]Можно дополнительно попробовать настроить Alert на Fatal Error, чтобы Agent автоматически отсылал сообщение об ошибках. Естественно, для этого нужна живая ОС агента - так что этот вид ошибок не отловится ;(. Хотя агент может мониторить и сервер на "чужом" компьютере...
Anatoly Podgoretsky (2006-02-08 15:10:00) [17]Пинг ничего не дает, кроме того он обычно запрещен.
Надо именно делать соединение к базе.