/// <summary> /// Handles a restore request /// </summary> internal async Task HandleRestorePlanRequest( RestoreParams restoreParams, RequestContext <RestorePlanResponse> requestContext) { RestorePlanResponse response = new RestorePlanResponse(); try { ConnectionInfo connInfo; bool supported = IsBackupRestoreOperationSupported(restoreParams, out connInfo); if (supported && connInfo != null) { RestoreDatabaseTaskDataObject restoreDataObject = this.restoreDatabaseService.CreateRestoreDatabaseTaskDataObject(restoreParams); response = this.restoreDatabaseService.CreateRestorePlanResponse(restoreDataObject); } else { response.CanRestore = false; response.ErrorMessage = SR.RestoreNotSupported; } await requestContext.SendResult(response); } catch (Exception ex) { response.CanRestore = false; response.ErrorMessage = ex.Message; await requestContext.SendResult(response); } }
/// <summary> /// Handles a restore request /// </summary> internal async Task HandleRestoreRequest( RestoreParams restoreParams, RequestContext <RestoreResponse> requestContext) { RestoreResponse response = new RestoreResponse(); try { ConnectionInfo connInfo; bool supported = IsBackupRestoreOperationSupported(restoreParams, out connInfo); if (supported && connInfo != null) { try { RestoreDatabaseTaskDataObject restoreDataObject = this.restoreDatabaseService.CreateRestoreDatabaseTaskDataObject(restoreParams); if (restoreDataObject != null) { // create task metadata TaskMetadata metadata = new TaskMetadata(); metadata.ServerName = connInfo.ConnectionDetails.ServerName; metadata.DatabaseName = connInfo.ConnectionDetails.DatabaseName; metadata.Name = SR.RestoreTaskName; metadata.IsCancelable = true; metadata.Data = restoreDataObject; // create restore task and perform SqlTask sqlTask = SqlTaskManager.Instance.CreateAndRun(metadata, this.restoreDatabaseService.RestoreTaskAsync, restoreDatabaseService.CancelTaskAsync); response.TaskId = sqlTask.TaskId.ToString(); } else { response.ErrorMessage = SR.RestorePlanFailed; } } catch (Exception ex) { response.ErrorMessage = ex.Message; } } else { response.ErrorMessage = SR.RestoreNotSupported; } await requestContext.SendResult(response); } catch (Exception ex) { response.Result = false; response.ErrorMessage = ex.Message; await requestContext.SendResult(response); } }
/// <summary> /// Handles a restore request /// </summary> internal async Task HandleRestoreRequest( RestoreParams restoreParams, RequestContext <RestoreResponse> requestContext) { RestoreResponse response = new RestoreResponse(); try { ConnectionInfo connInfo; bool supported = IsBackupRestoreOperationSupported(restoreParams.OwnerUri, out connInfo); if (supported && connInfo != null) { try { RestoreDatabaseTaskDataObject restoreDataObject = this.restoreDatabaseService.CreateRestoreDatabaseTaskDataObject(restoreParams, connInfo); if (restoreDataObject != null) { restoreDataObject.LockedDatabaseManager = ConnectionServiceInstance.LockedDatabaseManager; // create task metadata TaskMetadata metadata = TaskMetadata.Create(restoreParams, SR.RestoreTaskName, restoreDataObject, ConnectionServiceInstance); metadata.DatabaseName = restoreParams.TargetDatabaseName; // create restore task and perform SqlTask sqlTask = SqlTaskManagerInstance.CreateAndRun <SqlTask>(metadata); response.TaskId = sqlTask.TaskId.ToString(); } else { response.ErrorMessage = SR.RestorePlanFailed; } } catch (Exception ex) { response.ErrorMessage = ex.Message; } } else { response.ErrorMessage = SR.RestoreNotSupported; } await requestContext.SendResult(response); } catch (Exception ex) { response.Result = false; response.ErrorMessage = ex.Message; await requestContext.SendResult(response); } }
/// <summary> /// Add options to restore plan response /// </summary> internal static void AddOptions(RestorePlanResponse response, RestoreDatabaseTaskDataObject restoreDataObject) { Validate.IsNotNull(nameof(response), response); Validate.IsNotNull(nameof(restoreDataObject), restoreDataObject); Validate.IsNotNull(nameof(restoreDataObject.RestorePlanner), restoreDataObject.RestorePlanner); var options = RestoreOptionsHelper.CreateRestorePlanOptions(restoreDataObject); foreach (var item in options) { response.PlanDetails.Add(item.Key, item.Value); } }