private void HandleOutput(RestoreDatabaseRequest request) { var waiterConfig = new WaiterConfiguration { MaxAttempts = MaxWaitAttempts, GetNextDelayInSeconds = (_) => WaitIntervalSeconds }; switch (ParameterSetName) { case StatusParamSet: response = client.Waiters.ForRestoreDatabase(request, waiterConfig, WaitForStatus).Execute(); break; case Default: response = client.RestoreDatabase(request).GetAwaiter().GetResult(); break; } WriteOutput(response, response.Database); }
/// <summary> /// Restore a Database based on the request parameters you provide. /// </summary> /// <param name="request"></param> /// <returns></returns> public RestoreDatabaseResponse RestoreDatabase(RestoreDatabaseRequest request) { var uri = new Uri($"{GetEndPoint(DatabaseServices.Databases, this.Region)}/{request.DatabaseId}/actions/resto"); using (var webResponse = this.RestClient.Post(uri, request.RestoreDatabaseDetails, new HttpRequestHeaderParam() { IfMatch = request.IfMatch })) using (var stream = webResponse.GetResponseStream()) using (var reader = new StreamReader(stream)) { var response = reader.ReadToEnd(); return(new RestoreDatabaseResponse() { DatabaseDetails = this.JsonSerializer.Deserialize <DatabaseDetails>(response), OpcRequestId = webResponse.Headers.Get("opc-request-id"), ETag = webResponse.Headers.Get("ETag") }); } }
public async Task <Database> RestoreDatabaseWithEncryptionAsync(string projectId, string instanceId, string databaseId, string backupId, CryptoKeyName kmsKeyName) { // Create a DatabaseAdminClient instance. DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.Create(); // Create the RestoreDatabaseRequest with encryption configuration. RestoreDatabaseRequest request = new RestoreDatabaseRequest { ParentAsInstanceName = InstanceName.FromProjectInstance(projectId, instanceId), DatabaseId = databaseId, BackupAsBackupName = BackupName.FromProjectInstanceBackup(projectId, instanceId, backupId), EncryptionConfig = new RestoreDatabaseEncryptionConfig { EncryptionType = RestoreDatabaseEncryptionConfig.Types.EncryptionType.CustomerManagedEncryption, KmsKeyNameAsCryptoKeyName = kmsKeyName, } }; // Execute the RestoreDatabase request. var operation = await databaseAdminClient.RestoreDatabaseAsync(request); Console.WriteLine("Waiting for the operation to finish."); // Poll until the returned long-running operation is complete. var completedResponse = await operation.PollUntilCompletedAsync(); if (completedResponse.IsFaulted) { Console.WriteLine($"Error while restoring database: {completedResponse.Exception}"); throw completedResponse.Exception; } var database = completedResponse.Result; var restoreInfo = database.RestoreInfo; Console.WriteLine($"Database {restoreInfo.BackupInfo.SourceDatabase} " + $"restored to {database.Name} " + $"from backup {restoreInfo.BackupInfo.Backup} " + $"using encryption key {database.EncryptionConfig.KmsKeyName}"); return(database); }
protected override void ProcessRecord() { base.ProcessRecord(); RestoreDatabaseRequest request; try { request = new RestoreDatabaseRequest { DatabaseId = DatabaseId, RestoreDatabaseDetails = RestoreDatabaseDetails, IfMatch = IfMatch }; HandleOutput(request); FinishProcessing(response); } catch (Exception ex) { TerminatingErrorDuringExecution(ex); } }
public async Task <StorageResponse <bool> > RestoreDatabaseAsync(RestoreDatabaseRequest request) { await KillDatabaseConncetionsAsync(request.Server); try { var dataFileName = GetDatabaseName(DatabaseFileType.Data, request.Server.DatabaseName); var logFileName = GetDatabaseName(DatabaseFileType.Log, request.Server.DatabaseName); var dataFullFileName = request.FilePathData.SetValidDirectoryPathEnd(); var logFullFileName = request.FilePathLog.SetValidDirectoryPathEnd(); dataFullFileName += dataFileName + ConstantsMsSql.FILE_EXTENSION_MDF; logFullFileName += logFileName + ConstantsMsSql.FILE_EXTENSION_LDF; var sqlCommand = new StringBuilder(); sqlCommand.AppendLine($"{ConstantsMsSql.IF} DB_ID('{request.Server.DatabaseName}') {ConstantsMsSql.ISNOTNULL}"); sqlCommand.AppendLine(ConstantsMsSql.BEGIN); sqlCommand.AppendLine($"{ConstantsMsSql.DROP} {ConstantsMsSql.DATABASE} [{request.Server.DatabaseName}]"); sqlCommand.AppendLine(ConstantsMsSql.END); sqlCommand.AppendLine($"{ConstantsMsSql.RESTORE} {ConstantsMsSql.DATABASE} [{request.Server.DatabaseName}]"); sqlCommand.AppendLine($"{ConstantsMsSql.FROM} {ConstantsMsSql.DISK} = '{request.BackupFullFileName}'"); sqlCommand.AppendLine($"{ConstantsMsSql.WITH} {ConstantsMsSql.MOVE} '{dataFileName}' {ConstantsMsSql.TO} '{dataFullFileName}',"); sqlCommand.AppendLine($"{ConstantsMsSql.MOVE} '{logFileName}' {ConstantsMsSql.TO} '{logFullFileName}',"); sqlCommand.AppendLine($"{ConstantsMsSql.STATS} = 10;"); await ExecuteNonQueryAsync(request.Server, sqlCommand.ToString(), ConstantsMsSql.MASTER); } catch (Exception ex) { return(new StorageResponse <bool> { IsFaulty = true, Exception = ex }); } return(new StorageResponse <bool> { Data = true }); }
partial void Modify_RestoreDatabaseRequest(ref RestoreDatabaseRequest request, ref CallSettings settings) => ApplyResourcePrefixHeaderFromInstance(ref settings, request.Parent);
public Task <InvocationResponse> RestoreDatabaseAsync(string targetModel, RestoreDatabaseRequest request) { throw new System.NotImplementedException(); }