updlock
у меня есть форма с гридом. грид не редактируемый. при щелчке на записи открывается форма элементов с этой записью, приэтом выполняется запрос в транзакции
(select * from tbl with(updlock) where fname='Bravo')
запись блокируется, и кней есть доступ только для чтения, далее...
эту запись можно изменить и отправить изменения в базу (SQL),
но когда при уже открытой форме элементов я опять щелкаю на грид на другую запись произходит тоже самое - запись блокируется все нормально, но при отправлении изменений в базу приложение в таймауте, и это произходит когда открыто две или более формы элементов.
Почему так произходит, ведь я блокирую строго по одной записи???
Или тут надо сделать как-то по другому??
если есть варианы, то пришлите пожалуйста какой нить код!!!!
При этом возможность редактировать две записи одновременно должна остаться!!!
Спасибо!!!!! заранее
подскажите пожалуйста!!!
...когда открыто две или более формы элементов.
Почему так произходит, ведь я блокирую строго по одной записи???
Или тут надо сделать как-то по другому??
если есть варианы, то пришлите пожалуйста какой нить код!!!!
При этом возможность редактировать две записи одновременно должна остаться!!!
что за версия MS SQL?
В MSDN описаны особенности блокировок и проблемы для конкретных версий.
По признакам похоже на deadlock, через менеджер должно быть видно что происходит.
Кроме того, удостоверьтесь, что у Вас действительно используется блокировка на уровне записи, а не на уровне страниц или таблицы, проверьте текущий уровень изоляции транзакции.
что за версия MS SQL?
В MSDN описаны особенности блокировок и проблемы для конкретных версий.
По признакам похоже на deadlock, через менеджер должно быть видно что происходит.
Кроме того, удостоверьтесь, что у Вас действительно используется блокировка на уровне записи, а не на уровне страниц или таблицы, проверьте текущий уровень изоляции транзакции.
каким образом я могу проверить текущий уровень изоляции?
версия SQL-2000
каким образом я могу проверить текущий уровень изоляции?
версия SQL-2000
Если используется ADO, то у ADODB.Connection есть свойство IsolationLevel.
Я понял так, что для каждой формы редактирования создается отдельное соединение, открывается транзакция и делается вышеуказанный запрос с хинтом блокировки на update? Или не так?
И что в менеджере пишется по поводу блокировок во время работы приложения?
Если используется ADO, то у ADODB.Connection есть свойство IsolationLevel.
Я понял так, что для каждой формы редактирования создается отдельное соединение, открывается транзакция и делается вышеуказанный запрос с хинтом блокировки на update? Или не так?
И что в менеджере пишется по поводу блокировок во время работы приложения?
да все правильно, но не работает чета
да все правильно, но не работает чета
Во вложении набросок(мягко говоря). Чем отличается по принципу работы от Вашего и работает ли на Вашей базе?
Во вложении набросок(мягко говоря). Чем отличается по принципу работы от Вашего и работает ли на Вашей базе?
очень хороший пример: работает
но почемуто в VB.NET такая же конструкция не работает
очень хороший пример: работает
но почемуто в VB.NET такая же конструкция не работает
К сожалению, в VB.NET я не эксперт. Я глядел его для общего ознакомления, но ни одного реального проекта не было, поэтому подсказать ничего толкового сейчас не смогу.
К сожалению, в VB.NET я не эксперт. Я глядел его для общего ознакомления, но ни одного реального проекта не было, поэтому подсказать ничего толкового сейчас не смогу.
в VB.NET можно использовать рекордсет, я попробую твой пример в него интегр
К сожалению, в VB.NET я не эксперт. Я глядел его для общего ознакомления, но ни одного реального проекта не было, поэтому подсказать ничего толкового сейчас не смогу.
все равно спасибо, по крайней мере он работает так как я думал, буду искать!!!:D
все равно спасибо, по крайней мере он работает так как я думал, буду искать!!!:D
Подскажите пожалйста!!!!
Я использую Базу данных SQL, с помощью ВБ.НЕТ я блокирую выбранную запись в таблице(select * from tbl with(updlock,rowlock) Where PK = '1'), работает нормально, НО.
Когда другой пользователь пытается таким же селектом выбрать ту же запись, то он начинает ждать пока запись не освободится или пройдет тамАут, а это плохо потому что начинает думать что все зависло!!!!!
КАК узнать статус именно этой строки, чтобы предотвратить это???
Спасибо!!!!