Lock SAS Tables. Блокировка таблиц SAS. Part 2

Всем добрый день.

Начну сразу с рассмотрения TestCase.

Допустим у Вас есть процесс который обращается к SAS таблице, которая периодически обновляется (допустим неким ETL процессом).

Если в момент обновления таблицы вы попробуете к ней обратиться, то схватите ошибку "невозможности блокировки таблицы":






Как можно обойти эту пролему?




Один из возможных вариантов - можно в цикле проверять залочена ли таблица и если да, через какой-то промежуток времени опять делать проверку и так до дех пор пока не истечет ожидаемое время либо до тех пор пока таблицу не отпустит сторонний процесс и вы тогда ее спокойно заблокируете.

Привожу макрос, проверяющий в цикле осободили ли таблицу и если да, то блокирует ее.




















При этом рабочий лог может выглядеть следующим образом:



















Из лога видно, что макрос висел почти 20 секунд и после этого таблица была отпущена и тутже заблокирована нашим процессом. После мы уже делаем то что хотим ( в данном случае просто переливаем данные).

Да, и не забывайте разблокировать талицу когда закончите с ней работать.

P.S. оригинал макроса можно посмотреть здесь.



Ярлыки: , ,