Exemple #1
0
        internal void RestoreData(DateTime?fromDay, DateTime?toDay, RestoreStatus theRuningStatusInSession)
        {
            //备份源数据库
            TransferService.StartLittleProcess(theRuningStatusInSession, string.Format("{0}{1}", Utility._Process_BackUpDb, _DbName));
            string targetName = string.Format("{0}{1}{2}.bak", DiskOperations.DbBackUp_ForRestoreDirectory, _DbName, Utility.GetTimeStamp());

            SqlCommandRunner.BackUpDb(_DbName, targetName);

            //删减数据库备份
            TransferService.StartLittleProcess(theRuningStatusInSession, string.Format("{0}", Utility._Process_DelNonuseDbBackUp));
            theRuningStatusInSession.AddInformationLine(DiskOperations.DelFilesFromDirectory(DiskOperations.DbBackUp_ForRestoreDirectory, _DbName, targetName, _DefaultBackUpDbCount));

            //拷贝下载的数据库用于数据还原
            string copyDbName = _DbName + _ForRestoreCopyDbSuffix;
            string downLoadDbBackUpFullName = string.Format("{0}{1}{2}.bak", DiskOperations.DataTemp_ForRestoreDirectory, _DbName, _OrginCopyDbSuffix);

            TransferService.StartLittleProcess(theRuningStatusInSession, string.Format("{0}{1}", Utility._Process_CopyDb, copyDbName));
            SqlCommandRunner.RestoreDbFromFile(copyDbName, DiskOperations.TempDirectory, downLoadDbBackUpFullName);

            //每一个表的数据还原
            foreach (TableTransfer tt in _TablesToTransfer)
            {
                tt.RestoreData(fromDay, toDay, theRuningStatusInSession);
            }

            //删除无用的数据库拷贝
            TransferService.StartLittleProcess(theRuningStatusInSession, string.Format("{0}{1}", Utility._Process_DelNonUseDb, copyDbName));
            SqlCommandRunner.DeleteDb(copyDbName);
        }
        public void BackUpData(DateTime?fromDay, DateTime?toDay, BackUpStatus theRuningStatusInSession)
        {
            try
            {
                //写入迁移配置文件
                TransferService.StartLittleProcess(theRuningStatusInSession, TransferConfig.WriteConfigToString());
                TransferConfig.WriteConfig(this, fromDay, toDay);

                //配置所有过滤器
                TransferService.StartLittleProcess(theRuningStatusInSession, Utility._Process_ConfigFilter);
                ConfigAllRuleFitler();

                //每个数据库执行操作
                foreach (DbTransfer dt in _DbsToTransfer)
                {
                    dt.BackUpData(fromDay, toDay, theRuningStatusInSession);
                }

                //打包下载文件
                TransferService.StartLittleProcess(theRuningStatusInSession, Utility._Process_RarBackUpFile);
                string theBackUpSimpleName = string.Format("{0}{1}.rar", _DefaultBackUpDbName, Utility.GetTimeStamp());
                string theBackUpFullPath   = string.Format("{0}{1}", DiskOperations.DownLoadDirectory, theBackUpSimpleName);
                CommandRunner.RarDirectoryToFile(theBackUpFullPath, DiskOperations.DataTemp_ForBackUpDirectory);
                theRuningStatusInSession.SuccessFileName     = theBackUpSimpleName;
                theRuningStatusInSession.SuccessFullFileName = theBackUpFullPath;

                //清理无用的数据
                TransferService.StartLittleProcess(theRuningStatusInSession, Utility._Process_CleanNonUseData);
                CommandRunner.CleanUpDirectory(DiskOperations.DataTemp_ForBackUpDirectory);
                theRuningStatusInSession.AddInformationLine(DiskOperations.DelFilesFromDirectory(DiskOperations.DownLoadDirectory, _DefaultBackUpDbName, theBackUpFullPath, _DefaultDownloadFiles));

                //成功运行
                TransferService.SuccessFlag(theRuningStatusInSession);
            }
            catch (ApplicationException ae)
            {
                TryBackUpErrorClean();
                TransferService.FailedFlag(theRuningStatusInSession, ae.Message);
            }
            catch (Exception e)
            {
                TryBackUpErrorClean();
                TransferService.ErrorFlag(theRuningStatusInSession, e.Message);
            }
        }
Exemple #3
0
        internal void BackUpData(DateTime?fromDay, DateTime?toDay, RunningStatus theRuningStatusInSession)
        {
            //备份源数据库
            TransferService.StartLittleProcess(theRuningStatusInSession, string.Format("{0}{1}", Utility._Process_BackUpDb, _DbName));
            string targetName = string.Format("{0}{1}{2}.bak", DiskOperations.DbBackUp_ForBackUpDirectory, _DbName, Utility.GetTimeStamp());

            SqlCommandRunner.BackUpDb(_DbName, targetName);

            //删减数据库备份
            TransferService.StartLittleProcess(theRuningStatusInSession, string.Format("{0}", Utility._Process_DelNonuseDbBackUp));
            theRuningStatusInSession.AddInformationLine(DiskOperations.DelFilesFromDirectory(DiskOperations.DbBackUp_ForBackUpDirectory, _DbName, targetName, _DefaultBackUpDbCount));

            //拷贝数据库用于数据筛选
            string copyDbName = _DbName + _OrginCopyDbSuffix;

            TransferService.StartLittleProcess(theRuningStatusInSession, string.Format("{0}{1}", Utility._Process_CopyDb, copyDbName));
            SqlCommandRunner.RestoreDbFromFile(copyDbName, DiskOperations.TempDirectory, targetName);

            //删除无用的表
            TransferService.StartLittleProcess(theRuningStatusInSession, Utility._Process_DelNonUseTable);
            theRuningStatusInSession.AddInformationLine(DropNonUseTable(copyDbName));

            //有用表数据筛选
            foreach (TableTransfer tt in _TablesToTransfer)
            {
                tt.BackUpData(fromDay, toDay, theRuningStatusInSession);
            }

            //将筛选完毕的数据库备份到指定地点用于打包压缩
            TransferService.StartLittleProcess(theRuningStatusInSession, string.Format("{0}{1}", Utility._Process_BackUpFiltedTable, copyDbName));
            BackUpFilteredDb(copyDbName);

            //删除无用的数据库拷贝
            TransferService.StartLittleProcess(theRuningStatusInSession, string.Format("{0}{1}", Utility._Process_DelNonUseDb, copyDbName));
            SqlCommandRunner.DeleteDb(copyDbName);
        }