Пример #1
0
 private void mnuServer_backupWithCompressAndInit_Click(object sender, EventArgs e)
 {
     var arg = new EventArgsFactory.BackupEventArgs {Compress = true, Format = true};
     tlsServer_BackupAll(sender, arg);
 }
Пример #2
0
 private void tlsDatabase_BackupWithCompressionOverwrite_Click(object sender, EventArgs e)
 {
     var arg = new EventArgsFactory.BackupEventArgs {Compress = true, Format = true};
     Database_Backup(sender, arg);
 }
Пример #3
0
        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));
        }
Пример #4
0
 private void tlsBackupAllWithCompressionOverwrite_Click(object sender, EventArgs e)
 {
     var arg = new EventArgsFactory.BackupEventArgs {Compress = true, Format = true};
     tlsServer_BackupAll(sender, arg);
 }