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