private void mnuServer_backupWithCompressAndInit_Click(object sender, EventArgs e) { var arg = new EventArgsFactory.BackupEventArgs {Compress = true, Format = true}; tlsServer_BackupAll(sender, arg); }
private void tlsDatabase_BackupWithCompressionOverwrite_Click(object sender, EventArgs e) { var arg = new EventArgsFactory.BackupEventArgs {Compress = true, Format = true}; Database_Backup(sender, arg); }
private async void tlsServer_BackupAll(object sender, EventArgsFactory.BackupEventArgs e) { if (!CanContinue(_oInstance)) return; var server = _oInstance; // Ask to activate sys dbs if no user dbs are available if (server.DatabasesCollection.Count == 0) { var dr = MessageBox.Show(NO_USER_DATABASES, "No user databases", MessageBoxButtons.YesNo); if (!dr.Equals(DialogResult.Yes)) return; tlsEnableSystemDbs.PerformClick(); return; } // I need a copy in case the collection changes during the async operations var listDatabases = new List<SqlDatabase>(server.DatabasesCollection); var checkedOk = 0; UIOperationStarted(sender, server, listDatabases.Count); foreach (var database in listDatabases) { var status = String.Format("({0}/{1})", listDatabases.IndexOf(database) + 1, listDatabases.Count); if (database.Status != "ONLINE") { SetStatus(sender, database, status, "SKIPPED", WRONG_DATABASE_STATE + string.Format("({0})", database.Status)); continue; } var par = new List<string>(); if (e == null) e = new EventArgsFactory.BackupEventArgs(); if (e.Compress) par.Add("COMPRESSION"); if (e.Format) par.Add("FORMAT"); var token = GetCancellationToken(SqlInstance.ListServers.IndexOf(server)); var db = database; var backup = Task.Run(() => db.BackupAsync(par, token)); try { await backup; // TODO: fix EXCEPTION if in single user if (token.IsCancellationRequested) { token.ThrowIfCancellationRequested(); } SetStatus(sender, db, status, "COMPLETED", database.Name + " backed up."); checkedOk++; } catch (OperationCanceledException) { SetStatus(sender, db, status, "CANCEL"); break; } catch (SqlException ex) { SetStatus(sender, db, status, "ERROR", ex.Message); } catch (Exception ex) { SetStatus(sender, db, status, "EXCEPTION", ex.Message); } finally { _progressBars[SqlInstance.ListServers.IndexOf(server)].Increment(1); //dgvDatabases.Refresh(); } } UIOperationClosed(sender, server, true, String.Format("Backed up successfully: {0}/{1}", checkedOk, listDatabases.Count)); }
private void tlsBackupAllWithCompressionOverwrite_Click(object sender, EventArgs e) { var arg = new EventArgsFactory.BackupEventArgs {Compress = true, Format = true}; tlsServer_BackupAll(sender, arg); }