ICubeMetaUpdateEx.CanLockBMOD

Синтаксис Fore

CanLockBMOD: Boolean;

Синтаксис Fore.NET

CanLockBMOD: Boolean;

Описание

Свойство CanLockBMOD определяет режим блокировки системной таблицы во время копирования.

Комментарии

По умолчанию свойству установлено значение True, при этом во время копирования осуществляется блокировка системной таблицы. Это позволяет избежать параллельной записи в базу данных временных рядов, в которую производится копирование. Если при этом параллельно запускаются какие-либо процессы копирования баз данных временных рядов, то они устанавливаются в очередь.

При установке свойству CanLockBMOD значения False во время копирования блокировка системной таблицы производиться не будет. Анализ запуска параллельных процессов копирования возлагается на прикладного разработчика.

Важно. Параллельный запуск нескольких процессов копирования при отключенной блокировке системной таблицы может привести к зависанию процессов.

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

Пример Fore

Для выполнения примера предполагается наличие в репозитории двух баз данных временных рядов: «FC_FROM» и «FC_FROM_COPY».

Sub UserProc;
Var
    Mb: IMetabase;
    Update: ICubeMetaUpdateEx;
Begin
    Mb := MetabaseClass.Active;
    Update := New CubeMetaUpdateClass.Create As ICubeMetaUpdateEx;
    Update.Metabase := Mb;
    Update.Rubricator := Mb.ItemById("FC_FROM").Bind As IRubricator;
    Update.TargetRubricator := Mb.ItemById("FC_FROM_COPY").Bind As IRubricator;
    //...
    //Настройка объекта копирования
    //...
    //Снятие блокировки системной таблицы
    Update.CanLockBMOD := False;
    //Запуск копирования
    Update.Apply(Null);
End Sub UserProc;

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

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Metabase;

Public Shared Sub Main(Params: StartParams);
Var
    Mb: IMetabase;
    Update: ICubeMetaUpdateEx = New CubeMetaUpdateClassClass();
Begin
    Mb := Params.Metabase;
    Update.Metabase := Mb;
    Update.Rubricator := Mb.ItemById["FC_FROM"].Bind() As IRubricator;
    Update.TargetRubricator := Mb.ItemById["FC_FROM_COPY"].Bind() As IRubricator;
    //...
    //Настройка объекта копирования
    //...
    //Снятие блокировки системной таблицы
    Update.CanLockBMOD := False;
    //Запуск копирования
    Update.Apply(Null);
End Sub;

См. также:

ICubeMetaUpdateEx