public ActionResult Restore(RestoreDatabaseModel data) { ViewBag.RestorePermissionServerList = GetRestorePermissionServerList(); ViewBag.ServersWithDefaultRecoveryToSimple = DatabaseServerSettings.Instance.DatabaseServerSettingsMap.Where(server => (bool)server.Value.GetSetting(DatabaseServerSettings.Setting.SetRecoveryModelToSimpleDefault)).Select(server => server.Key).ToList(); if (!UserPermissions.Instance.UserSpecificPermissions[HttpContext.Request.LogonUserIdentity.Name.ToUpper()].RestoreToServerList.Contains(data.TargetDatabaseServer)) { throw new Exception("You are unable to restore on this server."); } if (ModelState.IsValid) { var result = DatabaseContext.ValidateRestoreOperation(data.TargetDatabaseServer, data.TargetDatabaseName, HttpContext.Request.LogonUserIdentity.Name.ToUpper(), data.BackupType, decimal.Parse(data.FirstLSN), decimal.Parse(data.LastLSN), decimal.Parse(data.DatabaseBackupLSN)); if (result.CanOverwrite.HasValue) { if (result.CanOverwrite.Value) { ViewBag.WarningMessage = String.Format("Warning ! You already have a database/snapshot named [{0}] on server [{1}], please confirm if you wish to overwrite it.", data.TargetDatabaseName, data.TargetDatabaseServer); if (data.LastWarningMessage != (string)ViewBag.WarningMessage) { data.LastWarningMessage = (string)ViewBag.WarningMessage; return View("RestoreGetDetails", data); } } else { ModelState.AddModelError("TargetDatabaseName ", "A database with specified Target Database Name already exists, please provide a different name."); return View("RestoreGetDetails", data); } } if (!String.IsNullOrEmpty(result.CustomErrorMessage)) { ModelState.AddModelError("TargetDatabaseName ", result.CustomErrorMessage); return View("RestoreGetDetails", data); } } else { data.LastWarningMessage = null; return View("RestoreGetDetails", data); } IBgTask task = new RestoreDatabaseTask(data.TargetDatabaseServer, data.TargetDatabaseName, User.Identity.Name, data.BackupServerName, data.BackupDatabaseName, data.DatabaseComment, data.BackupFileList, data.RecoveryModelChangeToSimple, data.PositinInFileCollection, data.BackupType, data.RestoreWithRecovery); task.Start(); TaskContainer.Instance.AddTask(task); return RedirectToAction("GetProgress", "Task", new { taskGuid = task.ID }); }
public ActionResult RestoreGetDetails(RestoreDatabaseModel data) { List<SelectListItem> list = GetRestorePermissionServerList(); ViewBag.RestorePermissionServerList = list; ViewBag.ServersWithDefaultRecoveryToSimple = DatabaseServerSettings.Instance.DatabaseServerSettingsMap.Where(server => (bool)server.Value.GetSetting(DatabaseServerSettings.Setting.SetRecoveryModelToSimpleDefault)).Select(server => server.Key).ToList(); bool preselectedDatabaseServerChangeRecoveryToSimple = false; if (list.Count > 0) { preselectedDatabaseServerChangeRecoveryToSimple = (ViewBag.ServersWithDefaultRecoveryToSimple as List<string>).Contains(list.First().Value) ? true : false; } data.RecoveryModelChangeToSimple = preselectedDatabaseServerChangeRecoveryToSimple; data.RestoreWithRecovery = true; //clear any errors ModelState.Clear(); return View(data); }