Пауза синхронизации из TMS
Материал из wiki.standart-n.ru
Версия от 12:00, 24 августа 2018; Olgav (обсуждение | вклад)
В случаях "длинных транзакций" в ТМС, например, загрузка больших объемов справочников, массовый апдейт и т.д. крайне рекомендовано ставить синхронизацию текущей БД на паузу. Для этого нужно 1. Обновить dtclient до версии не ниже 2.2062 2. В ТМС добавить процедуру и вызывать ее до начала "длинной транзакции". Время указываем в минутах - максимально требуемое время для выполнения.
procedure DoSyncPause(minutes: integer); var q_pause: TIBQuery; dt: TDateTime; s:String; begin q_pause:=dm.tempquery(nil); try dt:=now+ minutes*1/(24*60); frmSpacePro.LogIt('Ñèíõðîíèçàöèÿ ïðèîñòàíîâëåíà äî: '+datetimetostr(dt)); s:='STOPEXCHANGEUNTIL0-0000-000000000000'; q_pause.SQL.Text:='update or insert into g$distribute (TABLENAME,UUID,SOPER,FROM_PROFILE_ID,TO_PROFILE_ID) values (''DistributeClient'','''+s+''',2,-1, cast((cast('''+datetimetostr(dt)+''' as dm_datetime)-cast(''30.12.1899 00:00:00'' as dm_datetime))*1000000 as numeric(15,0)))'; // frmSpacePro.LogIt(q_pause.SQL.Text); q_pause.ExecSQL; q_pause.Transaction.Commit; finally q_pause.Free; end; end;