Блокировка таблиц в MS SQL

Igor V. Blum
Дата: 10.12.2002 14:42:24
Всем доброго времени суток!

Работаю на Delphi через ADO с MS SQL сервером. Пользуюсь TBetterADO компонентами. Режим изоляции - ReadCommitted. Возикает следующая ситуация: как только стартую транзакцию и вношу какое-то изменение таблица в которой поменялось хотя бы одно поле в единственной записи блокируется. Ее не удается даже прочитать.
ADODataSet открыт в режиме ReadWrite. Уровень изоляции транзакций любой (эффект не изменяется). LockType - optimistic.
Курсор клиентский и Statiс.
Режим ReadWrite снимать нельзя. По совету умных людей выставил на селекты всех датасетов with(nolock). Сейчас все работает за исключением одного..

Есть два клиента: клиент1 и клиент2. На клиенте1 стартовала транзакция и произошло удаление записи из таблицы кроссинга.. В этот момент на клиенте2 стартовала транзакция и была добавлена запись в эту же таблицу кроссинга (изменение существующей записи проходит на ура, а вот добавление). Адошный компонент ждет снятия блокировки и в итоге вылетает по таймауту.. господа, подскажите пожалуйста, как обойти эти грабли?

Если я поставлю уровень изоляции ReadUncommitted у меня исчезнут подобные грабли?

С уважением, Игорь.

ЗЫ: Только не надо писать о том, что пишушие транзакции должны быть короткими, я это и сам знаю, просто в моем случае я не могу сделать так..