Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];

Вниз

Как лучше всего пинговать сервер?   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.035 c
15-1141746714
Ученик чародея
2006-03-07 18:51
2006.04.02
Наука и лженаука в чем отличие?


2-1142764813
sco
2006-03-19 13:40
2006.04.02
Полоса прокрутки


2-1142767748
Wood
2006-03-19 14:29
2006.04.02
О переменной окружения.


4-1137242738
Volf_555
2006-01-14 15:45
2006.04.02
Как в ран-тайме добавить в попап-меню расширенное меню?


4-1137105249
Alexx2000
2006-01-13 01:34
2006.04.02
Как на Winapi программно нарисовать иконку и получить ее в виде hicon





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский