Пауза синхронизации из TMS
Материал из wiki.standart-n.ru
В случаях "длинных транзакций" в ТМС, например, загрузка больших объемов справочников, массовый апдейт и т.д. крайне рекомендовано ставить синхронизацию текущей БД на паузу. Для этого нужно 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;