netfrog
Дата: 11.12.2002 15:30:43
Клиент VB 6
База SQL 7.0
Запрос к БД возвращает одну запись с пессимистической блокировкой. Другой пользователь "ломящийся" к этой же записи и пытающийся ее изменить - отваливается по таймауту. Это хорошо и правильно - но как определить действительно он оборвался по таймауту из за убогого коннекта или это работает блокировка? Код ошибки один и тот же...
netfrog
Дата: 11.12.2002 16:56:06
И хорошо, что не рвется :) Но проблема в том, что ошибочка одинаковая, а клиентское приложение надо уведомить о том, что редактироать запись нельзя
Дед Маздай
Дата: 11.12.2002 19:11:03
Тогда я не понимаю фразу "оборвался по таймауту из за убогого коннекта". В смысле QueryTimeout кончился? А при чем здесь убогий коннект? Т.е. Вы хотели, видимо, сказать, как различить ситуацию просто тяжелого запроса от запроса, к-й уперся в блокировку? Не знаю, п.ч. для клиента это одно и то же: запрос не выполнился в отведенное время. М.б. установить в начале коннекта SET LOCK_TIMEOUT в значение < QueryTimeout и ловить ошибку Server: Msg 1222, Level 16, State 50, Line 1 Lock request time out period exceeded. Это и будет отличительным признаком блокированного ресурса от ситуации, когда тяжелый запрос просто терминируется по QueryTimeout сессии.