Блокировка файлов БД

0 (0)
  • Развернуть Блокировка файлов БД ( Mirdok  04.08.2010 14:02 )
    5(1)
    Здравствуйте.

    При работе операционистов в RS-Bank часто стало появляться сообщение "Файл занят. Повторить?". Обычно заняты account.dbt, bankdprt.dbt или persn.dbt. Проблемы возникают при проводке документов (возможно не только, но пока жалоб не было).
    В макросах используется только ProcessConTrn.

    Кто-нибудь с этим сталкивался?
    >> Ответить
    • Развернуть Это сообщение еще не означает, что заблокирован весь файл. ( Солонко Дмитрий  05.08.2010 10:51 )
      5(1)
      В конкурентных транзакциях осуществляется блокировка отдельных записей и страниц файлов.
      Если внутри конкурентной транзакции попытаться обратиться к заблокированной записи или записи, которая расположена на заблокированной странице, то возможно два сценария обработки этой ситуации, которые выполняются автоматически:
      1. Операция, которая обращается к заблокированной записи, вернет соответствующий код ошибки (запись захвачена). В этом случае транзакция прерывается, все изменения откатываются. Затем транзакция автоматически запускается сначала. Количество таких циклов «прерывание-повтор» настраивается в файле rsreq.ini. Повторяться могут не только целые транзакции, но и отдельные операции с записями. Как только количество повторов транзакции достигнет значения заданного настройкой REPCOUNT выводится сообщение «Файл занят. Повторить?». Если ответить «Да», то счетчик циклов повтора будет сброшен и будет запущен еще один цикл повторов транзакции. Если ответить «Нет», то транзакция будет прервана с ошибкой.
      2. Операция, которая обращается к заблокированной записи, будет ожидать, пока другой процесс освободит требуемую запись. При этом возможны взаимоблокировки (DeadLock), обработка которых выполняется по первому сценарию.

      Первый сценарий соответствует значению настройки LOCKTYPE = N (по-умолчанию). Переключение на второй выполняется заданием значение LOCKTYPE = W.

      >> Ответить