Additional
dbCAP
AnyDAC
ThinDAC
NCOCI8
Topic: как правильно закрыть коннекшн?
как правильно закрыть коннекшн?
Posted: 2008/05/06 00:55
 
Есть ситуация, когда TADQuery или TADCommand ушел в долгое исполнение или подвисло на дедлоке и т.д. Возможно ли из другого потока корректно разорвать коннекшн, чтобы корректно завершить поток БД?
спасибо
Re:как правильно закрыть коннекшн?
Posted: 2008/05/06 01:01
 
Разорвать соединение корректно наврядли получиться.
А остановить исполнение команды можно методом AbortJob.
Но он поддерживается не всеми СУБД.
Re:как правильно закрыть коннекшн?
Posted: 2008/05/06 01:37
 
спасибо
буду проверять на Oracle и Sybase
Re:как правильно закрыть коннекшн?
Posted: 2008/05/06 01:43
 
На этих СУБД должно работать. Хотя у Oracle могут быть нюансы, зависящие от версии.
Re:как правильно закрыть коннекшн?
Posted: 2008/05/06 06:09
 
Тестирую на Оракле
Для TADCommand.AbortJob (Blocking mode) выполнение в TOCIService.Break OCIBreak возвращает OCI_SUCCESS..после этого State остается Aborting и комманд не выходит из выполнения... это может быть связано с особенностями Оракла? или может я чегото неправильно делаю и это всё применимо только к AsyncMode?
Re:как правильно закрыть коннекшн?
Posted: 2008/05/06 06:19
 
разобрался...
в событии OnError выполнялся запрос...
из-за этого и глючило.