|
Управлять блокировкой записей в MS SQL из Бильдера
|
|||
---|---|---|---|
#18+
Есть нужда управлять блокировкой записей MS SQL из Билдера, типа .......... //при открытии формы редактирования записи делаем: adoCommand->CommandText = "BEGIN TRAN" adoCommand->Execute(); /// далее исполняю сохраненную процедуру, которая возвращает одну запись: SELECT * FROM someTable WITH (UPDLOCK) WHERE someID = @xxx /// трали-вали ... работаем с записью и при закрытии формы делаем /// adoCommand->CommandText = "COMMIT TRAN" adoCommand->Execute(); .......... При этом количество заблокированных ресурсов на сервере не уменьшается (( и запись остается заблокированной для других юзеров. Именованные транзации не помогают. Хелп, плиз, если кто-нибудь знает как это побороть. Может быть есть другие технические решения данной проблемы? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2002, 11:16 |
|
Управлять блокировкой записей в MS SQL из Бильдера
|
|||
---|---|---|---|
#18+
Если я правильно понимаю, то вы хотите залокировать записи на время их обработки... Так вот транзакции здесь немного не в тему: BEGIN TRAN локирует таблицы полностью, так что если ваше приложение стоит более чем на одном клиенте, все остальные будут отдыхать пока вы эту запись обрабатываете. Я бы рекомендовал транзакции отсюда выкинуть и использовать другие методы блокировки, ну например, ROWLOCK. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2002, 09:27 |
|
|
start [/forum/topic.php?fid=57&fpage=487&tid=2036571]: |
0ms |
get settings: |
25ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
105ms |
get tp. blocked users: |
2ms |
others: | 410ms |
total: | 607ms |
0 / 0 |