Форум: "Базы";
Текущий архив: 2003.02.20;
Скачать: [xml.tar.bz2];
ВнизКак проверить наличие коннекции Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c