RUS  ENG 

Блокировка при изменении поля в базах данных

Страницы: 1
RSS
Блокировка при изменении поля в базах данных, Изменяется одинаковое поля в нескольких базах. Зависает после обработки одной базы и перед открытием другой.
 
Добрый день!

Версия сервера: 10.0.0.8097u.x64
Версия клиента 10.0.0.8084u.x64
Реализация в плагине. ZuluLib_TLB.
Embarcadero® RAD Studio 11.0 Version 28.0.42600.6491

Изменяется одинаковое поля в нескольких базах. Зависает после обработки одной базы и перед открытием другой.

L:=IMapDoc(FConnector.Zulu.ActiveDocument.NativeDoc).Layers.Active;
for i := 2 to 11 do
begin
if (i=9) or (i=10) then Continue;
output.Put('Проставляем -1 в поле source_num в базе "' + L.ObjectTypes.Item[i].Name +'"');
db:=L.OpenDatabase(L.ObjectTypes.Item[i].BaseID, '');
db.Queries.Default.ExecByExample('ИЗМЕНИТЬ -1' ,'source_num');
db.Close(False);
output.Put(' - ok'+ CHR(10));
end;

Причем, при повторном запуске зависнут может после обработки другой базы. Нет закономерности.
Иногда отрабатывает этот цикл полностью, тогда зависает на следующем блоке кода:

for i := 2 to 11 do
begin
if (i=9) or (i=10) then Continue;
db:=L.OpenDatabase(L.ObjectTypes.Item[i].BaseID, '');
L.UpdateFromAscii(db, tempFolder+'2.tmp', 'source_num');
db.Close(False);
output.Put('Обновлена база "' + L.ObjectTypes.Item[i].Name +'"'+ CHR(10));
end;

Второй блок кода иногда отрабатывает полностью и выдает вот такой результат:

Обновлена база "Узел"
Обновлена база "Потpебитель"
Обновлена база "Насосная станция"
Обновлена база "Задвижка"
Ошибка ZB db(zulu://********************************************):Ошибка доступа к данным. Транзакция (идентификатор процесса 67) вызвала взаимоблокировку ресурсов блокировка с другим процессом и стала жертвой взаимоблокировки. Запустите транзакцию повторно. (Код ошибки: 0x80004005).
Обновлена база "Участки"
Обновлена база "Дросселирующий узел"
Обновлена база "ЦТП"
Обновлена база "Перемычка"

Подскажите, пожалуйста, возможные причины или как можно отследить причину?
Страницы: 1