Пауза синхронизации из TMS — различия между версиями
Материал из wiki.standart-n.ru
Olgav (обсуждение | вклад) (Новая страница: « В случаях "длинных транзакций" в ТМС, например, загрузка больших объемов справочников, м…») |
Olgav (обсуждение | вклад) |
||
Строка 14: | Строка 14: | ||
try | try | ||
dt:=now+ minutes*1/(24*60); | dt:=now+ minutes*1/(24*60); | ||
− | frmSpacePro.LogIt(' | + | frmSpacePro.LogIt('Синхронизация приостановлена до: '+datetimetostr(dt)); |
s:='STOPEXCHANGEUNTIL0-0000-000000000000'; | s:='STOPEXCHANGEUNTIL0-0000-000000000000'; | ||
q_pause.SQL.Text:='update or insert into g$distribute (TABLENAME,UUID,SOPER,FROM_PROFILE_ID,TO_PROFILE_ID) | q_pause.SQL.Text:='update or insert into g$distribute (TABLENAME,UUID,SOPER,FROM_PROFILE_ID,TO_PROFILE_ID) |
Текущая версия на 12:10, 24 августа 2018
В случаях "длинных транзакций" в ТМС, например, загрузка больших объемов справочников, массовый апдейт и т.д. крайне рекомендовано ставить синхронизацию текущей БД на паузу. Для этого нужно 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;