/// <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); } }