private void RestoreAtDateExecute(ServerAccess ba, SqlServerAccess sa, FileInfo f, string dbName, RestoreOption opt) { try { using (new NetworkConnection(ba.uri, new NetworkCredential(ba.username, ba.password))) { var filePath = f.FullName; using (new NetworkConnection(sa.uri, new NetworkCredential(sa.username, sa.password))) { string destPath = Path.Combine(sa.uri, sa.folder, f.Name); if (File.Exists(destPath)) { File.Delete(destPath); } File.Copy(filePath, destPath); var bakFilePath = destPath; destPath = destPath.Replace(sa.uri, sa.disk); SMOHelper restoreInstance = new SMOHelper(sa); restoreInstance.Restore(destPath, dbName, opt); if (File.Exists(bakFilePath)) { File.Delete(bakFilePath); } } } } catch (Exception ex) { Logger.Error(ex.Message); } }
/// <summary> /// 下载文件 /// </summary> /// <returns></returns> public string Opt_DownloadFile() { if (!IsAdmin) { return("没有权限"); } string BackupName = Request["BackupName"]; var backupItem = SMOHelper.GetBackups().First(item => item.IsDeleted == false && item.BackupName == BackupName); if (backupItem == null || !File.Exists(backupItem.BackupFullPath)) { return("参数异常"); } using (FileStream fs = new FileStream(backupItem.BackupFullPath, FileMode.Open)) { const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力 byte[] buffer = new byte[ChunkSize]; long dataLengthToRead = fs.Length;//获取下载的文件总大小 Response.ContentType = "application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(BackupName + ".bak")); while (dataLengthToRead > 0 && Response.IsClientConnected) { int lengthRead = fs.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小 Response.OutputStream.Write(buffer, 0, lengthRead); Response.Flush(); dataLengthToRead = dataLengthToRead - lengthRead; } } return(""); }
public string Opt_Restore() { if (!IsAdmin) { return("没有权限"); } string backupName = Request["backupName"]; SMOHelper.Restore(backupName); return("操作成功"); }
public string Opt_R_emove() { if (!IsAdmin) { return("没有权限"); } string backupName = Request["backupName"]; SMOHelper.DeleteBackup(backupName); return("操作成功"); }
private void RestoreAtTimeExecute(ServerAccess ba, SqlServerAccess sa, string c, string dbName, DateTime time, RestoreOption opt) { try { using (new NetworkConnection(ba.uri, new NetworkCredential(ba.username, ba.password))) { string path = Path.Combine(ba.uri, ba.dailyfolder, c); DirectoryInfo dir = new DirectoryInfo(path); FileInfo[] files = dir.GetFiles("*.bak").OrderByDescending(p => p.CreationTime).ToArray(); var f = files.FirstOrDefault(); var filePath = f.FullName; var creationDate = f.CreationTime; FileInfo[] transactionFiles = dir.GetFiles("*.trn").OrderByDescending(p => p.CreationTime).ToArray(); using (new NetworkConnection(sa.uri, new NetworkCredential(sa.username, sa.password))) { string destPath = Path.Combine(sa.uri, sa.folder, f.Name); if (File.Exists(destPath)) { File.Delete(destPath); } File.Copy(filePath, destPath); var bakFilePath = destPath; var transactionFilesPath = CopyAllTransactionFiles(transactionFiles, sa, creationDate, time); destPath = destPath.Replace(sa.uri, sa.disk); var transactionFilesDestPath = new List <string>(); foreach (var tf in transactionFilesPath) { transactionFilesDestPath.Add(tf.Replace(sa.uri, sa.disk)); } SMOHelper restoreInstance = new SMOHelper(sa); restoreInstance.RestoreAtTime(destPath, transactionFilesDestPath, time, dbName, opt); if (File.Exists(bakFilePath)) { File.Delete(bakFilePath); } foreach (var fileToDel in transactionFilesPath) { if (File.Exists(fileToDel)) { File.Delete(bakFilePath); } } } } } catch (Exception ex) { Logger.Error(ex.Message); } }
public string Opt_RestoreBackup() { try { var filePath = Request["FullPath"]; SMOHelper.RestoreFile(filePath); return("还原成功"); } catch (Exception e) { return(e.Message); } }
private async Task SqlOnClickExecute(SqlServerAccess sa) { SMOHelper restoreInstance = new SMOHelper(sa); var bddList = restoreInstance.GetDatabase(); await Dispatcher.BeginInvoke(DispatcherPriority.Send, (ThreadStart)(() => { SourceDatabases.Clear(); foreach (var bdd in bddList) { SourceDatabases.Add(bdd); } })); }
/// <summary> /// 备份系统 /// </summary> /// <returns></returns> public string Opt_Backup() { if (!IsAdmin) { return("没有权限"); } string backupName = Request["BackupName"]; string remark = Request["remark"]; SMOHelper.Backup(backupName, remark); BLL.OperationRecordBLL.Add(TModel.MID, ChangeType.O_BFWZ, "备份网站"); return("操作成功"); }
public string Opt_GetList() { var backups = SMOHelper.GetBackups(); totalCount = backups.Count(); int idx = 0; var list = backups.Skip((PageIndex - 1) * PageSize).Take(PageSize).Select(item => new { ID = ++idx, BackupName = item.BackupName, BackupTime = item.BackupTime.ToString("yyyy-MM-dd HH:mm:ss.fff"), Size = item.GetSizeStr(), Remark = item.Remark }); return(JavaScriptConvert.SerializeObject(new { PageData = list.ToList(), TotalPage = TotalPage() })); }
protected override void SetPowerZone() { BackupItems = SMOHelper.GetBackups(); }
private async Task ShrinkFileExecute(SqlServerAccess sa) { SMOHelper instance = new SMOHelper(sa); instance.ShrinkAllDBFile(); }
private async Task ShrinkExecute(SqlServerAccess sa, string db) { SMOHelper instance = new SMOHelper(sa); instance.Shrink(db); }
private async Task CleanExecute(SqlServerAccess sa, RestoreOption opt, string db) { SMOHelper instance = new SMOHelper(sa); instance.Clean(db, opt); }