GetServerLocksInformation

From SunFlurry wiki
Jump to: navigation, search
  GetServerLocksInformation (Информация по блокировкам)
Объект:Функции общего назначения
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Сервер
Исключения:Не администратор
Визуальность:Нет

Функция получает полный список блокированных в данный момент объектов на сервере (включая именованные семафоры). Функция доступна для выполнения только под учетными записями администраторов. В результате успешного выполнения функции, возвращается таблица, имеющая следующие столбцы:

  • LOCKID -- внутренний идентификатор блокировки на сервере
  • REFCOUNT -- внутренний счетчик обращений к блокировке на сервере
  • ELEMENT -- ссылка на блокируемый элемент или наименование серверного семафора
  • PATH -- путь базы данных элемента (тип и вид элемента) (к примеру, REF.Номенклатура)
  • LOCKTIME -- дата и время инициации блокировки
  • USERNAME -- имя пользователя, осуществившего блокировку
  • MACHINENAME -- имя компьютера, на котором была осуществлена блокировка
  • FLAGS -- особые флаги блокировки, битовая маска:
    • бит 0 -- постоянная блокировка (временные блокировки возникают, к примеру, при сохранении элементов, и длятся короткое время)
    • бит 1 -- внутренний флаг bLockedAllNeeded установлен (отладочная информация)
    • бит 2 -- пользователь, осуществивший блокировку соединен с сервером (после внезапного разъединения, сервер может ожидать восстановления связи от клиента в течение нескольких минут)
    • бит 3 -- перекрестная проверка пройдена успешно

Синтаксис

GetServerLocksInformation(<Перекрестная проверка (INT)>=0):<Таблица блокировок сервера (TAB)>

Аргументы

  • <Перекрестная проверка (INT)> - (необязательный аргумент) Флаг выполнения перекрестной проверки (проверки непротиворечивости информации по блокировке на сервере) -- это отладочная опция, создающая более высокую загрузку по выполнению запроса блокировок, чем обычно. Не рекомендовано использовать, кроме как для отладки системы.

Возвращаемое значение

Возвращается таблица со списком всех заблокированных объектов.


Примеры

//Фрагмент получает информацию по текущим блокировкам на сервере и копирует ее в визуальную таблицу
MainTab:=Form.MainTab.Value;
aTab:=GetServerLocksInformation(Form.оПерекрестная.Value);
If Form.оПерекрестная.Value=1 Then
  //Добавим столбец "CROSSCHECK", если проводилась перекрестная проверка
  aTab.AddColumn("CROSSCHECK","Пер. проверка",,20);
  aTab.Column("CROSSCHECK").MaxWidth:=120;
  aTab.Select();
  While aTab.Next() Do
    aTab.CROSSCHECK:=?(Number(aTab.FLAGS) and 8<>0,"OK","BAD");
  EndDo;
EndIf;
MainTab.Clear();
aTab.CopyTo(MainTab);