/// <summary> 备份 /// </summary> void UCAcountSet_BackupEvent(object sender, EventArgs e) { if (dgvAccList.CurrentRow == null) { MessageBoxEx.Show("请选择记录!"); return; } try { string accCode = dgvAccList.CurrentRow.Cells["setbook_code"].Value.ToString(); string msg = string.Format("将要备份当前选中帐套{0}({1}),是否继续?", dgvAccList.CurrentRow.Cells["setbook_name"].Value.ToString(), accCode); DialogResult result = MessageBoxEx.Show(msg, "系统提示", MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { string bak_filename = accCode + GlobalStaticObj_Server.Instance.CurrentDateTime.ToString("yyMMddHHmmss") + ".bak"; string errMsg = CommonUtility.BackupDb(accCode, bak_filename); if (!string.IsNullOrEmpty(errMsg)) { MessageBoxEx.ShowWarning("系统正在努力尝试,请重新备份!"); return; } MessageBoxEx.ShowInformation("备份成功"); } } catch (Exception ex) { GlobalStaticObj_Server.GlobalLogService.WriteLog("帐套设置", ex); MessageBoxEx.ShowWarning("程序异常"); } }
/// <summary> 备份 /// </summary> public void BackupAcc() { string accCode = dgvAccList.CurrentRow.Cells["setbook_code"].Value.ToString(); string bak_filename = accCode + GlobalStaticObj_Server.Instance.CurrentDateTime.ToString("yyMMddHHmmss") + ".bak"; string errMsg = CommonUtility.BackupDb(accCode, bak_filename); if (!string.IsNullOrEmpty(errMsg)) { throw new Exception(errMsg); } }
/// <summary> 定时器(半小时) /// </summary> private void timerBackupPlan_Tick(object sender, EventArgs e) { if (GlobalStaticObj_Server.Instance.CurrentDateTime.Hour > 2 && GlobalStaticObj_Server.Instance.CurrentDateTime.Hour < 4) { bool isAllBackUp = false; List <string> list = new List <string>(); #region 记录需要备份的账套 foreach (string str in GlobalStaticObj_Server.Instance.DicBackupPlan.Keys) { string[] intArr = GlobalStaticObj_Server.Instance.DicBackupPlan[str]; DateTime dtStart = Common.UtcLongToLocalDateTime(Convert.ToInt64(intArr[2])); bool isBackup = false; if (intArr[3] == "") { isBackup = true; } else { DateTime dtLastBackupTime = Common.UtcLongToLocalDateTime(Convert.ToInt64(intArr[3])); if (Convert.ToInt32(intArr[0]) == (int)DataSources.EnumAutoBackupType.EveryDay) { if ((GlobalStaticObj_Server.Instance.CurrentDateTime - dtLastBackupTime).Days > Convert.ToInt32(intArr[1])) { isBackup = true; } } else if (Convert.ToInt32(intArr[0]) == (int)DataSources.EnumAutoBackupType.EveryWeek) { int weekEnum = (int)GlobalStaticObj_Server.Instance.CurrentDateTime.DayOfWeek; if (weekEnum == 0) { weekEnum = 7; } if (Convert.ToInt32(intArr[1]) == weekEnum) { if (Common.GetWeekOfYear(dtLastBackupTime) != Common.GetWeekOfYear(GlobalStaticObj_Server.Instance.CurrentDateTime)) { isBackup = true; } } } else if (Convert.ToInt32(intArr[0]) == (int)DataSources.EnumAutoBackupType.EveryMonth && GlobalStaticObj_Server.Instance.CurrentDateTime.Day == Convert.ToInt32(intArr[1])) { if (dtLastBackupTime.Date != GlobalStaticObj_Server.Instance.CurrentDateTime.Date) { isBackup = true; } } } if (isBackup) { if (str == "") { DataTable dt = DBHelper.GetTable("获取账套信息", GlobalStaticObj_Server.DbPrefix + GlobalStaticObj_Server.CommAccCode, "sys_setbook", "*", "enable_flag=1", "", "order by setbook_code"); foreach (DataRow drAcc in dt.Rows) { string accCode = drAcc["setbook_code"].ToString(); if (!list.Contains(accCode)) { list.Add(accCode); } } isAllBackUp = true; break; } else { if (!list.Contains(str)) { list.Add(str); } } } } #endregion #region 开始备份 DateTime dtBakTime = GlobalStaticObj_Server.Instance.CurrentDateTime; bool isSuccess = true; foreach (string accCode in list) { string bak_filename = accCode + dtBakTime.ToString("yyMMdd") + ".bak"; string errMsg = CommonUtility.BackupDb(accCode, bak_filename); if (!string.IsNullOrEmpty(errMsg)) { isSuccess = false; } } #endregion #region //如果是备份 所有账套,记录备份记录 if (isAllBackUp) { Dictionary <string, string> dicFields = new Dictionary <string, string>(); dicFields.Add("bak_id", Guid.NewGuid().ToString()); dicFields.Add("bak_acccode", "---"); dicFields.Add("bak_filename", "所有账套"); dicFields.Add("is_success", Convert.ToInt32(isSuccess).ToString()); dicFields.Add("bak_method", Convert.ToInt32(DataSources.EnumBackupMethod.ManualBackup).ToString()); dicFields.Add("bak_time", Common.LocalDateTimeToUtcLong(dtBakTime).ToString()); dicFields.Add("bak_by", GlobalStaticObj_Server.Instance.UserID); DBHelper.Submit_AddOrEdit("新建备份记录", GlobalStaticObj_Server.DbPrefix + GlobalStaticObj_Server.CommAccCode, "sys_backup_record", "", "", dicFields); } #endregion } }