Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.20;
Скачать: CL | DM;

Вниз

Как проверить наличие коннекции   Найти похожие ветки 

 
jocko   (2003-01-31 11:24) [0]

Как проверить наличие коннекции, если она была установлена, а затем разорвана сервером (выгружен процесс на сервере, напр. из-за перегруженности или из-за плохой связи). перед отправкой очередного запроса, так чтобы иметь возможность выдать сообщение с предложением переконнектиться.
MS SQL, ADO?


 
Darkwin ©   (2003-01-31 13:41) [1]

Напиши такой код:
procedure TForm1.ADOConnection1ExecuteComplete(Connection: TADOConnection;
RecordsAffected: Integer; const Error: Error;
var EventStatus: TEventStatus; const Command: _Command;
const Recordset: _Recordset);

var
mes_ES,mes_RA,mes_err:String;
begin
if Error<>nil then
mes_err:=
"Error.Number="+IntToStr(Error.Number)+#10#13+
"Error.NativeError="+IntToStr(Error.NativeError)+#10#13+
"Error.Source="+Error.Source+#10#13+
"Error.Description="+Error.Description;

mes_RA:= "RecordsAffect="+IntToStr(RecordsAffected);
mes_ES:="EventStatus: " + GetEnumName(TypeInfo(TEventStatus), Ord(EventStatus));

MessageBox(Handle,PChar(mes_RA+#10#13#10#13+mes_err+#10#13#10#13+mes_ES),PChar("ADOConnection1ExecuteComplete"),MB_OK);
end;

запусти приложение, разорви связь с сервером потом восстанови, попытайся послать какой-нибудь запрос, и всё станет ясно...


 
jocko   (2003-01-31 14:54) [2]

Хотел бы конкретизировать,
в этом обработчике уменя и так сидит нечто похожее, собственно только так я и показываю сообщение об ошибках сервера, все вызовы процедур сидят в try except.
Как определить именно обрыв связи?!!!
onWillExecute тоже не подходит (EventStatus всегда такой радостный esOk ,...), хотя в документации "Occurs after a database server signals acceptance of a command execution"


 
Darkwin ©   (2003-01-31 15:48) [3]

наверно так: (всё в том же событии)
if EventStatus=esErrorsOccured then
begin
// вроде номер дисконнекта = -2147467259, а может и нет, проверь
if Error.Number=-2147467259 then
ShowMessage("Disconnect");
EventStatus:= esOK; // чтобы не выскочила ошибка
end;


 
jocko   (2003-01-31 17:10) [4]

Спасибо, как до самого не дошло...


 
BlackTiger   (2003-01-31 19:06) [5]

А если пойти дальше и круче?

Как сделать некий "connection sensor"?

Чтобы сидел на таймере и сообщал об обрыве связи сразу, при этом не мешая работать (на своей thread).


 
jocko   (2003-02-03 09:19) [6]

Наверно не стоит, "connection sensor" вопервых будет забивать трафик не нужными вызовами, вовторых загружать сервер, теми же ненужными вызовами, а проблема именно с полохой связью и перегруженностью сервера (выгрузку спящих процессов на малозагруженном сервере никто делать не будет), в третьих запросы придется посылать через тот же Сonnection так что мешаться он всеравно будет...

Я сначала хотел сделать именно так, потом передумал.




Страницы: 1 вся ветка

Текущий архив: 2003.02.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
3-63590
Alpine
2003-02-04 13:19
2003.02.20
Как создать копию поля но с другим именем ?


8-63693
vilfred
2002-11-07 17:51
2003.02.20
как сохранить видео-фрейм в bmp?


6-63701
Лагутин Антон
2002-12-29 14:58
2003.02.20
Работа с почтой


14-63736
kingdom
2003-02-05 13:14
2003.02.20
О где же ты, гуру, который поможет мне с настройкой DCOM?


8-63685
Юрий
2002-11-08 14:07
2003.02.20
Надпись под углом