Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

updlock

8.0K
25 мая 2005 года
AlexCOM10
16 / / 19.05.2005
подскажите пожалуйста!!!

у меня есть форма с гридом. грид не редактируемый. при щелчке на записи открывается форма элементов с этой записью, приэтом выполняется запрос в транзакции
(select * from tbl with(updlock) where fname='Bravo')
запись блокируется, и кней есть доступ только для чтения, далее...
эту запись можно изменить и отправить изменения в базу (SQL),
но когда при уже открытой форме элементов я опять щелкаю на грид на другую запись произходит тоже самое - запись блокируется все нормально, но при отправлении изменений в базу приложение в таймауте, и это произходит когда открыто две или более формы элементов.
Почему так произходит, ведь я блокирую строго по одной записи???
Или тут надо сделать как-то по другому??
если есть варианы, то пришлите пожалуйста какой нить код!!!!
При этом возможность редактировать две записи одновременно должна остаться!!!

Спасибо!!!!! заранее
4.4K
26 мая 2005 года
blind rain
66 / / 20.07.2004
Цитата:
Originally posted by AlexCOM10
подскажите пожалуйста!!!
...когда открыто две или более формы элементов.
Почему так произходит, ведь я блокирую строго по одной записи???
Или тут надо сделать как-то по другому??
если есть варианы, то пришлите пожалуйста какой нить код!!!!
При этом возможность редактировать две записи одновременно должна остаться!!!



что за версия MS SQL?
В MSDN описаны особенности блокировок и проблемы для конкретных версий.
По признакам похоже на deadlock, через менеджер должно быть видно что происходит.
Кроме того, удостоверьтесь, что у Вас действительно используется блокировка на уровне записи, а не на уровне страниц или таблицы, проверьте текущий уровень изоляции транзакции.

8.0K
26 мая 2005 года
AlexCOM10
16 / / 19.05.2005
Цитата:
Originally posted by blind rain
что за версия MS SQL?
В MSDN описаны особенности блокировок и проблемы для конкретных версий.
По признакам похоже на deadlock, через менеджер должно быть видно что происходит.
Кроме того, удостоверьтесь, что у Вас действительно используется блокировка на уровне записи, а не на уровне страниц или таблицы, проверьте текущий уровень изоляции транзакции.


каким образом я могу проверить текущий уровень изоляции?
версия SQL-2000

4.4K
26 мая 2005 года
blind rain
66 / / 20.07.2004
Цитата:
Originally posted by AlexCOM10
каким образом я могу проверить текущий уровень изоляции?
версия SQL-2000


Если используется ADO, то у ADODB.Connection есть свойство IsolationLevel.
Я понял так, что для каждой формы редактирования создается отдельное соединение, открывается транзакция и делается вышеуказанный запрос с хинтом блокировки на update? Или не так?

И что в менеджере пишется по поводу блокировок во время работы приложения?

8.0K
26 мая 2005 года
AlexCOM10
16 / / 19.05.2005
Цитата:
Originally posted by blind rain
Если используется ADO, то у ADODB.Connection есть свойство IsolationLevel.
Я понял так, что для каждой формы редактирования создается отдельное соединение, открывается транзакция и делается вышеуказанный запрос с хинтом блокировки на update? Или не так?

И что в менеджере пишется по поводу блокировок во время работы приложения?



да все правильно, но не работает чета

4.4K
26 мая 2005 года
blind rain
66 / / 20.07.2004
Цитата:
Originally posted by AlexCOM10
да все правильно, но не работает чета



Во вложении набросок(мягко говоря). Чем отличается по принципу работы от Вашего и работает ли на Вашей базе?

8.0K
26 мая 2005 года
AlexCOM10
16 / / 19.05.2005
Цитата:
Originally posted by blind rain
Во вложении набросок(мягко говоря). Чем отличается по принципу работы от Вашего и работает ли на Вашей базе?



очень хороший пример: работает

но почемуто в VB.NET такая же конструкция не работает

4.4K
26 мая 2005 года
blind rain
66 / / 20.07.2004
Цитата:
Originally posted by AlexCOM10
очень хороший пример: работает

но почемуто в VB.NET такая же конструкция не работает


К сожалению, в VB.NET я не эксперт. Я глядел его для общего ознакомления, но ни одного реального проекта не было, поэтому подсказать ничего толкового сейчас не смогу.

8.0K
26 мая 2005 года
AlexCOM10
16 / / 19.05.2005
Цитата:
Originally posted by blind rain
К сожалению, в VB.NET я не эксперт. Я глядел его для общего ознакомления, но ни одного реального проекта не было, поэтому подсказать ничего толкового сейчас не смогу.



в VB.NET можно использовать рекордсет, я попробую твой пример в него интегр

8.0K
26 мая 2005 года
AlexCOM10
16 / / 19.05.2005
Цитата:
Originally posted by blind rain
К сожалению, в VB.NET я не эксперт. Я глядел его для общего ознакомления, но ни одного реального проекта не было, поэтому подсказать ничего толкового сейчас не смогу.



все равно спасибо, по крайней мере он работает так как я думал, буду искать!!!:D

8.0K
27 мая 2005 года
AlexCOM10
16 / / 19.05.2005
Цитата:
Originally posted by AlexCOM10
все равно спасибо, по крайней мере он работает так как я думал, буду искать!!!:D




Подскажите пожалйста!!!!

Я использую Базу данных SQL, с помощью ВБ.НЕТ я блокирую выбранную запись в таблице(select * from tbl with(updlock,rowlock) Where PK = '1'), работает нормально, НО.
Когда другой пользователь пытается таким же селектом выбрать ту же запись, то он начинает ждать пока запись не освободится или пройдет тамАут, а это плохо потому что начинает думать что все зависло!!!!!
КАК узнать статус именно этой строки, чтобы предотвратить это???

Спасибо!!!!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог