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

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

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

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

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

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

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

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

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

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

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

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

Lock SAS Tables. Блокировка таблиц SAS. Part 2: 3 комментария

  1. Алексей, можешь пояснить что нам это концептуально даст?

    Я так понимаю что мы будет просто рендомно проверять освободилась ли таблица, а не как сейчас каждую секунду.

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.