Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Timeout BDE [MSSQL]


neXt ©   (2003-03-12 16:57:00) 

бд: MSSQL; клиент на BDE
Выполняется запрос, TQuery, в нём вызывается дерево процедур. В них открываются и закрываются транзакции.
В случае если запрос обрывается по таймауту (BDE, а не серверный) запрос обрывается на полуслове и генерится соответствующий Exception. Коннектион не обрывается и в нём остаются незакрытые транзакции. Пользователь повторяет попытку (10 раз) и сервер падает из-за блокировок в повисших транзакциях.
Кто-нибудь сталкивался с такой проблемой?
ЗЫ: Рецепт - увеличь таймаут я знаю.


neXt   (2003-03-12 17:16:00) [1]

ЗЫ: разумеется Query Analyser не причём - вопрос по работе с BDE


neXt   (2003-03-12 17:15:00) [2]

Повторяю:
Я знаю в чём ошибка. Это ошибка генерируемая BDE ( BDE code за номером 13059) - вылет по таймауту.
Я знаю какой запрос шлётся на сервер. Там процедуры работают! в том числе используют транзакции.
Проблема в том что при вылете BDE не закрывает транзакции.


Delirium   (2003-03-12 17:04:00) [3]

Стандартные рекомендации:
1) Запусти 10 раз из Query Analyser, если ошибок нет - поблема в проге (или в BDE)
2) Смотри что предаётся MSSQL в Profiler-е, всё-ли правильно
3) Смотри заблокированные объекты в Enterprise Manager-е и сопоставь их с о своими транзакциями


Наверх

Титульная страница Поиск, карта сайта Написать письмо