![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не добавляется информация в БД [D7, 2000, XP]
СержК © (2010-06-08 09:09:00)Мастера подскажите.
Лет семь назад была написана программа на D7 (БД - InterBase 5.6, дотуп к БД организован через BDE Administrator).
Это ПО (сама программа, сервер IB) были установлены на сервере (2 интеловских 2-х ядерных процессора) - все работало без проблемм много лет.
Но по причине поломки железяки пришлось все переустановить на другое железо (четырехядерный Xeon).
Стал замечать глюки. После запуска программы (она крутится постоянно на сервере там же где установлен IB) все работае отлично. Там организовано в цикле добавление информации в БД. Так вот - через какое-то время информация в БД перестает добавляться. После перезапуска программы все работает,а через какое-то время глюки опять повторяются.
Огромная просьба - подскажите в чем проблемма?
Anatoly Podgoretsky (2010-06-08 14:23:00) [1]
> а что не так в [25] ?
Хотя бы отсутствие try except
СержК (2010-06-08 14:21:00) [2]
> 12 © (08.06.10 14:09) [30]
Попробую. Будут результаты - отпишусь.
Спасибо.
12 (2010-06-08 14:09:00) [3]как то так
try
> QueryCloseDefect.ParamByName('pDATE_REMONT').AsDateTime:
> =StrToDate(Str_Data_Remo nt);
> QueryCloseDefect.ParamByName('pFIO_REMONT').AsBlob:=Str_FIO_remont;
>
> QueryCloseDefect.ParamByName('pTEXT_REMONT').AsBlob:=Str_TEXT_Remont;
>
> QueryCloseDefect.ParamByName('pNAME_TXT_FILE_DEFECT').AsString:
> =Trim(Str_Name_Cl ose_File);
>
> Database1.StartTransaction;
> QueryCloseDefect.ExecSQL;
> if Database1.InTransaction then Database1.Commit;
except
on E:Exception do
begin
E.Message := E.Message + #13#10 + ' Вот тута пошла фигня.. ';
Raise;
end;
end;
Компонент TApplicationEvents
procedure TfrmEditRequest.ApplicationEvents1Exception(Sender: TObject; E: Exception);
begin
InitLog(E,true);
end;
Procedure InitLog(E:Exception; Show:boolean = false);
Begin
if frmLog = nil then frmLog := TfrmLog.Create(application);
frmLog.memLog.Lines.Add('Произошла ошибка: ' + E.ClassName + '/' + E.Message);
if Show then frmLog.Show;
End;
RWolf (2010-06-08 13:18:00) [4]
> Anatoly Podgoretsky © (08.06.10 12:30) [27]
а что не так в [25] ?
СержК (2010-06-08 12:33:00) [5]
> Anatoly Podgoretsky © (08.06.10 12:30) [27]
> > СержК (08.06.2010 12:18:25) [25]
>
> Твой код надо выбросить.
Согласен подскажите правильный код.
Anatoly Podgoretsky (2010-06-08 12:30:00) [6]> СержК (08.06.2010 12:18:25) [25]
Твой код надо выбросить.
Anatoly Podgoretsky (2010-06-08 12:19:00) [7]> СержК (08.06.2010 11:46:21) [21]
Конечно, всегда виновата система, а не программист.
СержК (2010-06-08 12:18:00) [8]
> sniknik © (08.06.10 12:00) [24]
> > как мне получить эту информацию
> try except ... + возможно Win32Check
Буду очень признателен если подскажите как все это применить к данному коду:
QueryCloseDefect.ParamByName('pDATE_REMONT').AsDateTime:=StrToDate(Str_Data_Remo nt);
QueryCloseDefect.ParamByName('pFIO_REMONT').AsBlob:=Str_FIO_remont;
QueryCloseDefect.ParamByName('pTEXT_REMONT').AsBlob:=Str_TEXT_Remont;
QueryCloseDefect.ParamByName('pNAME_TXT_FILE_DEFECT').AsString:=Trim(Str_Name_Cl ose_File);
Database1.StartTransaction;
QueryCloseDefect.ExecSQL;
if Database1.InTransaction then Database1.Commit;
sniknik (2010-06-08 12:00:00) [9]> как мне получить эту информацию
try except ... + возможно Win32Check
sniknik (2010-06-08 11:58:00) [10]> Может переписать "серверную" програмку без использования BDE?
Anatoly Podgoretsky © (08.06.10 11:27) [17]
> Программу надо переписать.
зачем уточнения?
только переписать нужно грамотно, с BDE, без BDE это дело десятое.
СержК (2010-06-08 11:56:00) [11]
> sniknik © (08.06.10 11:30) [18]
> настройки при поиске глюков вторичны, первичны сообщения
> от эксептов в момент между "все работает" и "все поломалось".
>
как мне получить эту информацию на примере вышеприведенного кода?
СержК (2010-06-08 11:46:00) [12]"Серверная" программа на клиентской машине работает нормально. На своей машине (в отладчике в том числе) все отлично.
Предполагаю что глючит BDE??? Кстати BDE критичен к железу?
Может переписать "серверную" програмку без использования BDE?
Anatoly Podgoretsky (2010-06-08 11:38:00) [13]> sniknik (08.06.2010 11:30:18) [18]
Это хорошие "все поломалось" исключения
12 (2010-06-08 11:31:00) [14]логгируйте действия
после каждой команды серверу - в лог, время, что послано, что вернулось
sniknik (2010-06-08 11:30:00) [15]настройки при поиске глюков вторичны, первичны сообщения от эксептов в момент между "все работает" и "все поломалось".
Anatoly Podgoretsky (2010-06-08 11:27:00) [16]> СержК (08.06.2010 10:44:12) [12]
Программу надо переписать.
Sergey13 (2010-06-08 11:26:00) [17]> [15] СержК (08.06.10 11:09)
Попробуй запустить "серверную" программу на клиентской машине.
СержК (2010-06-08 11:09:00) [18]Да нет этих отличий - уже сравнил.
Sergey13 (2010-06-08 11:00:00) [19]> [13] СержК (08.06.10 10:49)
Ну так сравни, найди отличия и почитай про эти отличия.
СержК (2010-06-08 10:49:00) [20]Может я чего-то не понимаю... Если проблемма в настройках BDE, то почему кокое-то время после запуска все работает отлично и только через несколько часов начинается...