CanLockBMOD: Boolean;
CanLockBMOD: Boolean;
Свойство CanLockBMOD определяет режим блокировки системной таблицы во время репликации.
По умолчанию свойству установлено значение True, при этом во время репликации осуществляется блокировка системной таблицы. Это позволяет избежать параллельной записи в базу данных временных рядов, в которую производится копирование. Если при этом параллельно запускаются какие-либо репликации, то они устанавливаются в очередь.
При установке свойству CanLockBMOD значения False во время репликации блокировка системной таблицы производиться не будет. Анализ запуска параллельных репликаций возлагается на прикладного разработчика.
Важно. Параллельный запуск нескольких репликаций при отключенной блокировке системной таблицы может привести к зависанию репликаций.
Значение данного свойства не сохраняется с объектом репликации, его изменение доступно только при работе с объектом репликации из 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.
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;
См. также: