public override void WriteSyncJournal(SyncDatabase db, SyncJournalInfo JournalInfo) { if (IsTableExists("SYNC_JNL", db) && (JournalInfo.LocalReplicaCount > 1 || JournalInfo.RemoteReplicaCount > 1)) { string sql = @"INSERT INTO SYNC_JNL (DAT, LOCAL_LINK_ID, REMOTE_LINK_ID, TIME_START, TIME_END, LOGTEXT, SUCCESS, LOCAL_REPLICA_COUNT, REMOTE_REPLICA_COUNT) VALUES (@DAT, @LOCAL_LINK_ID, @REMOTE_LINK_ID, @TIME_START, @TIME_END, @LOGTEXT, @SUCCESS, @LOCAL_REPLICA_COUNT, @REMOTE_REPLICA_COUNT)"; FbCommand cmd = db.CreateCommand() as FbCommand; cmd.CommandText = sql; cmd.Parameters.Add("@DAT", FbDbType.Date).Value = JournalInfo.Date; cmd.Parameters.Add("@LOCAL_LINK_ID", FbDbType.Date).Value = JournalInfo.LocalLinkId; cmd.Parameters.Add("@REMOTE_LINK_ID", FbDbType.Date).Value = JournalInfo.RemoteLinkId; cmd.Parameters.Add("@TIME_START", FbDbType.Date).Value = JournalInfo.TimeStart; cmd.Parameters.Add("@TIME_END", FbDbType.Date).Value = JournalInfo.TimeEnd; cmd.Parameters.Add("@LOGTEXT", FbDbType.Date).Value = JournalInfo.LogMessages; cmd.Parameters.Add("@SUCCESS", FbDbType.SmallInt).Value = JournalInfo.Success ? 1 : 0; cmd.Parameters.Add("@LOCAL_REPLICA_COUNT", FbDbType.Integer).Value = JournalInfo.LocalReplicaCount; cmd.Parameters.Add("@REMOTE_REPLICA_COUNT", FbDbType.Integer).Value = JournalInfo.RemoteReplicaCount; cmd.ExecuteNonQuery(); } }
public abstract void WriteSyncJournal(SyncDatabase db, SyncJournalInfo JournalInfo);
public bool Execute() { bool result = false; jnl = new SyncJournalInfo(); jnl.Date = DateTime.Today; jnl.TimeStart = DateTime.Now; jnl.LocalLinkId = _LocalToRemoteLinkId; jnl.RemoteLinkId = _RemoteToLocalLinkId; jnl.Success = true; _BeginStoreLogMessages(); try { if (log.IsDebugEnabled) { log.Debug("Execute:begin"); } log.Info("-- начало синхронизации --------------"); try { try { Validate(); Connect(); try { if (_Order == SyncAgentOrder.RemoteLocal) { SyncRemoteFromLocal(); if (RemoteToLocalLinkId != 0) { SyncLocalFromRemote(); } } else if (_Order == SyncAgentOrder.LocalRemote) { if (RemoteToLocalLinkId != 0) { SyncLocalFromRemote(); } SyncRemoteFromLocal(); } } finally { try { Disconnect(); } catch { // если дисконнет не удался, то скорей всего связь уже прервана } //throw; } result = true; } catch (Exception ex) { log.Error(string.Format( "Ошибка при работе агента синхронизации:\r\nСостояние: {0}\r\nОшибка: {0}", State, ex.Message), ex); StateChange(SyncState.Inactive); result = false; } } finally { StateChange(SyncState.Inactive); } log.Info("-- конец синхронизации --------------"); if (log.IsDebugEnabled) { log.Debug("Execute:end"); } } finally { } return(result); }