Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];

Вниз

Транзакции в ADO   Найти похожие ветки 

 
DimaL   (2007-10-23 03:35) [0]

Есть программа, работающая с БД Access. В БД хранятся документы (примерно как в 1С "Один ко многим"). При начале редактирования документа Открывается транзакция
ADOConnection.BeginTrans
и закрывается при закрытии документа. Проблема в следующем: Пока открыта транзакция доступ ко всем оспользуемым в транзакции таблицам полностью заблокирован. Как убрать блокировки.


 
ЮЮ ©   (2007-10-23 04:36) [1]

Отказаться от
> При начале редактирования документа Открывается транзакция
> ADOConnection.BeginTrans


Use the LockType ltBatchOptimistic to open a dataset in batch update mode.

Call UpdateBatch to write any pending updates to disk for a dataset that is in batch update mode to the associated database.


 
Sergey13 ©   (2007-10-23 08:46) [2]

> [0] DimaL   (23.10.07 03:35)
> Как убрать блокировки.

Тебе надо разобраться с транзакциями - что это такое и с чем это едят. Ты же пытаешься вылечить закономерные последствия неправильного их применения.


 
Сусл ©   (2007-10-23 11:12) [3]


> Как убрать блокировки.

наверное можно это в Access (в MS-SQL, например, запросто with no lock). Но вот последствия будут не самыми радостными. Ибо будешь читать грязные данные.

т.о. поддерживаю [1] полностью.


 
DimaL   (2007-10-24 03:28) [4]

Возможно я выбрал не удачный подход. Но каким образом можно решить такую задачу работы с документом?


 
Сусл ©   (2007-10-24 11:19) [5]


> Возможно я выбрал не удачный подход. Но каким образом можно
> решить такую задачу работы с документом

мы ее решаем так:
1. есть спец. механизмы блолкировок. нет те, которые предоставляет mssql-server, а свой механизм. интерфейс к нему типа ObjectMark и ObjectUnmart. параметром передается идентификатор объекта.
2. клиент берет объект на редактирование, предварительно выставляя макр (по нашему блокировку) на объект. никто другой более взять на редактирование не может.
3. при сохранении:
 а. begin tran.
 b. update (запись измененных данных объекта)
 c. commit
 d. OjbectUnmark.


 
Val ©   (2007-10-24 15:07) [6]

>..есть спец. механизмы блолкировок. нет те, которые предоставляет mssql-
>server, а свой механизм..
это попытка приделать костыль эмуляции блокировки уровня записи на сервере-блокировочнике?


 
Val ©   (2007-10-24 15:13) [7]

>DimaL
"Неправильность" подхода в данном случае, в основном, в том, что вы начинаете "длинную" транзакцию. Стоит обернуть в транзакцию только непосредственную передачу изменений на сервер.


 
Сусл ©   (2007-10-25 12:55) [8]


>  [6] Val ©   (24.10.07 15:07)
> >..есть спец. механизмы блолкировок. нет те, которые предоставляет
> mssql-
> >server, а свой механизм..
> это попытка приделать костыль эмуляции блокировки уровня
> записи на сервере-блокировочнике?


э... даже отвечать не хочется, ибо "костыль" и "приделасть" не располагают на нужный лад.


>  [7] Val ©   (24.10.07 15:13)
> >DimaL
> "Неправильность" подхода в данном случае, в основном, в
> том, что вы начинаете "длинную" транзакцию. Стоит обернуть
> в транзакцию только непосредственную передачу изменений
> на сервер.


о том и речь - транзакция только при сохранении.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.006 c
2-1203071462
Sxquer
2008-02-15 13:31
2008.03.16
Поиск заданной строки в TWebBrowser


6-1182991283
TryToGet
2007-06-28 04:41
2008.03.16
Поиск хоста через инет


11-1185114823
=BuckLr=
2007-07-22 18:33
2008.03.16
XPMenus не работают


2-1203496459
fluxion
2008-02-20 11:34
2008.03.16
SQL запрос.


15-1202207987
Berkut
2008-02-05 13:39
2008.03.16
Постановка инженерной задачи по "Численное дифференциирование"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский