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

Вниз

Не добавляется информация в БД   Найти похожие ветки 

 
СержК   (2010-06-08 09:09) [0]

Мастера подскажите.
Лет семь назад  была написана программа на D7 (БД - InterBase 5.6, дотуп к БД организован через BDE Administrator).
Это ПО (сама программа, сервер IB) были установлены на сервере (2 интеловских 2-х ядерных процессора) - все работало без проблемм много лет.
Но по причине поломки железяки пришлось все переустановить на другое железо (четырехядерный Xeon).

Стал замечать глюки. После запуска программы (она крутится постоянно на сервере там же где установлен IB) все работае отлично. Там организовано в цикле добавление информации в БД. Так вот - через какое-то время информация в БД перестает добавляться. После перезапуска программы все работает,а через какое-то время глюки опять повторяются.
Огромная просьба - подскажите в чем проблемма?


 
sniknik ©   (2010-06-08 09:20) [1]

знаменитая ошибка 17-й строки... осложненная отсутствием логов и скрытием ексептов, похоже. и возможно завязанная на версию IB, системы и взаимодействие их с BDE.


 
СержК   (2010-06-08 09:30) [2]

Как решить это...???


 
brother ©   (2010-06-08 09:31) [3]

> Как решить это...???

в [1] намек на отсутствие уточняющей информации и кода ;)


 
sniknik ©   (2010-06-08 09:34) [4]

> Как решить это...???
категория ошибок из 17-строки нерешаема в принципе... или принципиально, что для автора несущественно.


 
СержК   (2010-06-08 09:41) [5]

Привожу код: Все это выполняется в цикле

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;

Вот сам запрос:

Update Gurnaldefect Set

DATE_REMONT = :pDATE_REMONT,
FIO_REMONT = :pFIO_REMONT,
TEXT_REMONT = :pTEXT_REMONT

Where NAME_TXT_FILE_DEFECT=:pNAME_TXT_FILE_DEFECT


 
sniknik ©   (2010-06-08 10:00) [6]

> через какое-то время информация в БД перестает добавляться.

> Вот сам запрос:
> Update Gurnaldefect Set
> ...
я тебя наверное разочарую, но она тут совершенно правильно не добавляется...

p.s. еще один такой пост и из категории "в  принципе"(что изменимо) вопрос перейдет в категорию "принципиально".


 
СержК   (2010-06-08 10:19) [7]

Постараюсь описать проблеммму подробнее.
Действительно я привел код на изменение записи в таблице БД (существует конечно и на добавление записи). Дело в следующем - после запуска программы через какое-то время перестает добавляться ЛЮБАЯ информация в БД (как изменение существующей записи в таблице БД, так и добавление новой записи). Все это проявилось при переходе на новое железо.

Да вот еще..
С данной БД работают несколько пользователей на своих рабочих станциях со своими клиентскими приложениями. У них проблемм НЕТ (добавляют, изменяют, удаляют).


 
brother ©   (2010-06-08 10:23) [8]

ну, это уже неуважение...
мы всю информацию из тебя клещами будем тянуть?
оказывается она еще и сетевая... и там все гуд...


 
RWolf ©   (2010-06-08 10:39) [9]

базу на ошибки проверяли?


 
Anatoly Podgoretsky ©   (2010-06-08 10:40) [10]


> СержК   (08.06.10 09:41) [5]

Никаким добавлением и не пахнет, нет задачи для решения.


 
Sergey13 ©   (2010-06-08 10:41) [11]

> [7] СержК   (08.06.10 10:19)
> С данной БД работают несколько пользователей на своих рабочих
> станциях со своими клиентскими приложениями. У них проблемм
> НЕТ (добавляют, изменяют, удаляют).

> [0] СержК   (08.06.10 09:09)
> дотуп к БД организован через BDE Administrator).

Неужели трудно выявить разницу? Если сервер и БД одни и те-же, программа одинакова, то очевидно, что разные какие-то настройки. Настройки тут, насколько я понял, возможны только в БДЕ. Сравни их на сервере и на клиентских станциях. Скорее всего проблема в них.


 
СержК   (2010-06-08 10:44) [12]

Да она сетевая. Время от времени работают 5-15 пользователей без проблемм в течении нескольких лет. И сейчас у них все отлично.

Проблемма возникла ТОЛЬКО с маленькой програмкой которая крутится локально там же где установлен IB сервер. Через некоторое время перестает добавляться/изменяться любая информация в БД. После перезапуска этой "маленькой" проги какое-то время все нормально (несколько часов) потом опять те же  грабли...


 
СержК   (2010-06-08 10:49) [13]

Может я чего-то не понимаю... Если проблемма в настройках BDE, то почему кокое-то время после запуска все работает отлично и только через несколько часов начинается...


 
Sergey13 ©   (2010-06-08 11:00) [14]

> [13] СержК   (08.06.10 10:49)

Ну так сравни, найди отличия и почитай про эти отличия.


 
СержК   (2010-06-08 11:09) [15]

Да нет этих отличий - уже сравнил.


 
Sergey13 ©   (2010-06-08 11:26) [16]

> [15] СержК   (08.06.10 11:09)

Попробуй запустить "серверную" программу на клиентской машине.


 
Anatoly Podgoretsky ©   (2010-06-08 11:27) [17]

> СержК  (08.06.2010 10:44:12)  [12]

Программу надо переписать.


 
sniknik ©   (2010-06-08 11:30) [18]

настройки при поиске глюков вторичны, первичны сообщения от эксептов в момент между "все работает" и "все поломалось".


 
12 ©   (2010-06-08 11:31) [19]

логгируйте действия
после каждой команды серверу - в лог, время, что послано, что вернулось


 
Anatoly Podgoretsky ©   (2010-06-08 11:38) [20]

> sniknik  (08.06.2010 11:30:18)  [18]

Это хорошие "все поломалось" исключения


 
СержК   (2010-06-08 11:46) [21]

"Серверная" программа на клиентской машине работает нормально. На своей машине (в отладчике в том числе) все отлично.

Предполагаю что глючит BDE??? Кстати BDE критичен к железу?
Может переписать "серверную" програмку без использования BDE?


 
СержК   (2010-06-08 11:56) [22]


> sniknik ©   (08.06.10 11:30) [18]
> настройки при поиске глюков вторичны, первичны сообщения
> от эксептов в момент между "все работает" и "все поломалось".
>

как мне получить эту информацию на примере вышеприведенного кода?


 
sniknik ©   (2010-06-08 11:58) [23]

> Может переписать "серверную" програмку без использования BDE?
Anatoly Podgoretsky ©   (08.06.10 11:27) [17]
> Программу надо переписать.

зачем уточнения?
только переписать нужно грамотно, с BDE, без BDE это дело десятое.


 
sniknik ©   (2010-06-08 12:00) [24]

> как мне получить эту информацию
try except ... + возможно Win32Check


 
СержК   (2010-06-08 12:18) [25]


> 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;


 
Anatoly Podgoretsky ©   (2010-06-08 12:19) [26]

> СержК  (08.06.2010 11:46:21)  [21]

Конечно, всегда виновата система, а не программист.


 
Anatoly Podgoretsky ©   (2010-06-08 12:30) [27]

> СержК  (08.06.2010 12:18:25)  [25]

Твой код надо выбросить.


 
СержК   (2010-06-08 12:33) [28]


> Anatoly Podgoretsky ©   (08.06.10 12:30) [27]
> > СержК  (08.06.2010 12:18:25)  [25]
>
> Твой код надо выбросить.


Согласен подскажите правильный код.


 
RWolf ©   (2010-06-08 13:18) [29]


> Anatoly Podgoretsky ©   (08.06.10 12:30) [27]

а что не так в [25] ?


 
12 ©   (2010-06-08 14:09) [30]

как то так

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;


 
СержК   (2010-06-08 14:21) [31]


> 12 ©   (08.06.10 14:09) [30]


Попробую. Будут результаты - отпишусь.
Спасибо.


 
Anatoly Podgoretsky ©   (2010-06-08 14:23) [32]


> а что не так в [25] ?

Хотя бы отсутствие try except



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

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

Наверх




Память: 0.55 MB
Время: 0.01 c
4-1239772550
SPeller
2009-04-15 09:15
2010.09.05
Как достоверно определить что программа запущена как сервис?


2-1276219742
Андрей_1
2010-06-11 05:29
2010.09.05
Видео поток + звук


15-1276204135
AKE
2010-06-11 01:08
2010.09.05
Интерпретатор "текстового" Паскаля для мобильного...


15-1275481386
bss
2010-06-02 16:23
2010.09.05
Компонент аля TEdit с возможностью раскраски отдельных символов


15-1276207217
Германн
2010-06-11 02:00
2010.09.05
Хочу создать glyph для кнопки.