Beispiel #1
0
 /// <summary>
 /// Retorna um objeto BackupDTO caso com os dados do ultimo backup realizado
 /// </summary>
 public BackupDTO GetLastBackup()
 {
     try
     {
         dbCommand = db.GetSqlStringCommand("SELECT * from backup order by 1 desc limit 1;");
         using (IDataReader DR = db.ExecuteReader(dbCommand))
         {
             BackupDTO tab = new BackupDTO();
             if (DR.Read())
             {
                 tab.Id          = int.Parse(DR["id"].ToString());
                 tab.Data        = (DateTime)DR["data"];
                 tab.Hora        = (TimeSpan)DR["hora"];
                 tab.Usuario     = DR["usuario"].ToString();
                 tab.Maquina     = DR["maquina"].ToString();
                 tab.Nomedados   = DR["nomedados"].ToString();
                 tab.Nomeempresa = DR["nomeempresa"].ToString();
                 tab.Tamanho     = int.Parse(DR["tamanho"].ToString());
                 tab.Versao      = DR["versao"].ToString();
                 tab.Banco       = DR["banco"].ToString();
             }
             return(tab);
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
Beispiel #2
0
        /// <summary>
        /// Retorna uma lista de objetos BackupDTO caso a instrução seja bem sucedida.
        /// </summary>
        public List <BackupDTO> GetGridBackup()
        {
            try
            {
                dbCommand = db.GetStoredProcCommand("GetGridBackup");

                using (IDataReader DR = (Transaction == null ? db.ExecuteReader(dbCommand) : db.ExecuteReader(dbCommand, Transaction)))
                {
                    List <BackupDTO> List = new List <BackupDTO>();
                    while (DR.Read())
                    {
                        BackupDTO tab = new BackupDTO();
                        tab.Id          = int.Parse(DR["id"].ToString());
                        tab.Data        = (DateTime)DR["data"];
                        tab.Hora        = (TimeSpan)DR["hora"];
                        tab.Usuario     = DR["usuario"].ToString();
                        tab.Maquina     = DR["maquina"].ToString();
                        tab.Nomedados   = DR["nomedados"].ToString();
                        tab.Nomeempresa = DR["nomeempresa"].ToString();
                        tab.Tamanho     = int.Parse(DR["tamanho"].ToString());
                        tab.Versao      = DR["versao"].ToString();
                        tab.Banco       = DR["banco"].ToString();
                        List.Add(tab);
                    }
                    return(List);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
Beispiel #3
0
        /// <summary>
        /// Retorna um objeto BackupDTO caso a instrução seja bem sucedida.
        /// </summary>
        public BackupDTO GetBackup(int id)
        {
            try
            {
                dbCommand = db.GetStoredProcCommand("GetBackup");
                db.AddInParameter(dbCommand, "@id", DbType.Int32, id);

                using (IDataReader DR = (Transaction == null ? db.ExecuteReader(dbCommand) : db.ExecuteReader(dbCommand, Transaction)))
                {
                    DR.Read();
                    BackupDTO tab = new BackupDTO();
                    tab.Id          = int.Parse(DR["id"].ToString());
                    tab.Data        = (DateTime)DR["data"];
                    tab.Hora        = (TimeSpan)DR["hora"];
                    tab.Usuario     = DR["usuario"].ToString();
                    tab.Maquina     = DR["maquina"].ToString();
                    tab.Nomedados   = DR["nomedados"].ToString();
                    tab.Nomeempresa = DR["nomeempresa"].ToString();
                    tab.Tamanho     = int.Parse(DR["tamanho"].ToString());
                    tab.Versao      = DR["versao"].ToString();
                    tab.Banco       = DR["banco"].ToString();
                    return(tab);
                }
            }
            catch
            {
                throw;
            }
        }
Beispiel #4
0
 /// <summary>
 /// Retorna um tipo VERDADEIRO caso a instrução seja bem sucedida.
 /// </summary>
 public bool Update(BackupDTO backup)
 {
     try
     {
         return(regrasdados.Update(backup));
     }
     catch (Exception ex)
     {
         throw new FaultException(ex.Message);
     }
 }
Beispiel #5
0
 /// <summary>
 /// Retorna o ID gerado pelo Banco de dados caso a instrução seja bem sucedida.
 /// </summary>
 public int Insert(BackupDTO backup)
 {
     try
     {
         return(regrasdados.Insert(backup));
     }
     catch (Exception ex)
     {
         throw new FaultException(ex.Message);
     }
 }
Beispiel #6
0
        /// <summary>
        /// Retorna o ID gerado pelo Banco de dados caso a instrução seja bem sucedida.
        /// </summary>
        public int Insert(BackupDTO backup)
        {
            DbConnection connection       = null;
            bool         transactionstart = false;

            try
            {
                using (connection = db.CreateConnection())
                {
                    connection.Open();
                    if (Transaction == null)
                    {
                        Transaction      = connection.BeginTransaction(IsolationLevel.ReadCommitted);
                        transactionstart = true;
                        //db.ExecuteNonQuery(Transaction, CommandType.Text, "SELECT GravaLOG_App(3, 'Inserindo registro','" + MechTech.Util.Global.UsuarioAtivo + "');");
                    }

                    dbCommand = db.GetSqlStringCommand(" INSERT INTO public.backup(" +
                                                       " data," +
                                                       " hora," +
                                                       " usuario," +
                                                       " maquina," +
                                                       " nomedados," +
                                                       " nomeempresa," +
                                                       " tamanho," +
                                                       " versao," +
                                                       " banco" +
                                                       ") VALUES (" +
                                                       " @data," +
                                                       " @hora," +
                                                       " @usuario," +
                                                       " @maquina," +
                                                       " @nomedados," +
                                                       " @nomeempresa," +
                                                       " @tamanho," +
                                                       " @versao," +
                                                       " @banco);" +
                                                       " SELECT currval('backup_id_seq');");
                    db.AddInParameter(dbCommand, "@data", DbType.Date, (DateTime?)backup.Data);
                    db.AddInParameter(dbCommand, "@hora", DbType.Time, (TimeSpan)backup.Hora);
                    db.AddInParameter(dbCommand, "@usuario", DbType.String, backup.Usuario);
                    db.AddInParameter(dbCommand, "@maquina", DbType.String, backup.Maquina);
                    db.AddInParameter(dbCommand, "@nomedados", DbType.String, backup.Nomedados);
                    db.AddInParameter(dbCommand, "@nomeempresa", DbType.String, backup.Nomeempresa);
                    db.AddInParameter(dbCommand, "@tamanho", DbType.Int32, backup.Tamanho);
                    db.AddInParameter(dbCommand, "@versao", DbType.String, backup.Versao);
                    db.AddInParameter(dbCommand, "@banco", DbType.String, backup.Banco);
                    int id = Convert.ToInt32(db.ExecuteScalar(dbCommand, Transaction));

                    if (transactionstart)
                    {
                        Transaction.Commit();
                        Transaction = null;
                    }
                    connection.Close();
                    return(id);
                }
            }
            catch
            {
                if (transactionstart)
                {
                    if (Transaction.Connection.State == ConnectionState.Open)
                    {
                        Transaction.Rollback();
                    }
                    Transaction = null;
                }
                if (connection.State == ConnectionState.Open)
                {
                    connection.Close();
                }
                throw;
            }
        }
Beispiel #7
0
        /// <summary>
        /// Retorna um tipo VERDADEIRO caso a instrução seja bem sucedida.
        /// </summary>
        public bool Update(BackupDTO backup)
        {
            DbConnection connection       = null;
            bool         transactionstart = false;

            try
            {
                using (connection = db.CreateConnection())
                {
                    connection.Open();
                    if (Transaction == null)
                    {
                        Transaction      = connection.BeginTransaction(IsolationLevel.ReadCommitted);
                        transactionstart = true;
                        //db.ExecuteNonQuery(Transaction, CommandType.Text, "SELECT GravaLOG_App(3, 'Atualizando registro','" + MechTech.Util.Global.UsuarioAtivo + "');");
                    }

                    dbCommand = db.GetSqlStringCommand(" UPDATE public.backup SET" +
                                                       " data = @data," +
                                                       " hora = @hora," +
                                                       " usuario = @usuario," +
                                                       " maquina = @maquina," +
                                                       " nomedados = @nomedados," +
                                                       " nomeempresa = @nomeempresa," +
                                                       " tamanho = @tamanho," +
                                                       " versao = @versao," +
                                                       " banco = @banco" +
                                                       " WHERE" +
                                                       " id = @id");
                    db.AddInParameter(dbCommand, "@id", DbType.Int32, backup.Id);
                    db.AddInParameter(dbCommand, "@data", DbType.Date, (DateTime?)backup.Data);
                    db.AddInParameter(dbCommand, "@hora", DbType.Time, (TimeSpan)backup.Hora);
                    db.AddInParameter(dbCommand, "@usuario", DbType.String, backup.Usuario);
                    db.AddInParameter(dbCommand, "@maquina", DbType.String, backup.Maquina);
                    db.AddInParameter(dbCommand, "@nomedados", DbType.String, backup.Nomedados);
                    db.AddInParameter(dbCommand, "@nomeempresa", DbType.String, backup.Nomeempresa);
                    db.AddInParameter(dbCommand, "@tamanho", DbType.Int32, backup.Tamanho);
                    db.AddInParameter(dbCommand, "@versao", DbType.String, backup.Versao);
                    db.AddInParameter(dbCommand, "@banco", DbType.String, backup.Banco);
                    db.ExecuteNonQuery(dbCommand, Transaction);

                    if (transactionstart)
                    {
                        Transaction.Commit();
                        Transaction = null;
                    }
                    connection.Close();
                    return(true);
                }
            }
            catch
            {
                if (transactionstart)
                {
                    if (Transaction.Connection.State == ConnectionState.Open)
                    {
                        Transaction.Rollback();
                    }
                    Transaction = null;
                }
                if (connection.State == ConnectionState.Open)
                {
                    connection.Close();
                }
                throw;
            }
        }
Beispiel #8
0
        private void ExecutarBackup(BackgroundWorker status, DoWorkEventArgs e)
        {
            try
            {
                NotifyIconBackup.Visible = true;
                NotifyIconBackup.ShowBalloonTip(0, "Cópia de Segurança", "Processo de cópia de segurança em andamento.", ToolTipIcon.Info);

                int       bkp             = 0;
                string    VersaoPostGres  = string.Empty;
                string    VersaoBanco     = string.Empty;
                BackupDTO LstBackup       = backupbo.GetLastBackup();
                BackupDTO BackupResultado = new BackupDTO();

                // VERIFICANDO O NÚMERO DO ÚLTIMO BACKUP REALIZADO
                if (LstBackup.Nomedados != "")
                {
                    if (LstBackup.Nomedados.Substring(6, 1) == "" || LstBackup.Nomedados.Substring(6, 1) == "5")
                    {
                        bkp = 1;
                    }
                    else
                    {
                        bkp = int.Parse(LstBackup.Nomedados.Substring(6, 1)) + 1;
                    }
                }
                else
                {
                    bkp = 1;
                }

                // DADOS DE CONEXÃO PARA O PG_DUMP
                string[] tags = Global.ConnectionStringPg.Split(';');
                //SERVIDOR
                string[] server   = tags[0].Split('=');
                string   Servidor = server[1];

                //PORTA
                string[] port  = tags[1].Split('=');
                string   porta = port[1];

                //BANCO DE DADOS
                string[] database   = tags[2].Split('=');
                string   BancoDados = database[1];

                //USUARIO
                string[] user    = tags[3].Split('=');
                string   usuario = user[1];

                //PWD
                string[] pwd = tags[4].Split('=');
                string   Pwd = pwd[1];

                // PEGANDO A VERSÃO DO BANCO DE DADOS
                try
                {
                    VersaoBanco = databasestructureBO.GetVersion();
                    string[] version = VersaoBanco.Split(' ');
                    VersaoPostGres = version[1].Substring(0, 1) + version[1].Substring(2, 1);
                }
                catch { }

                // VERIFICANDO E CRIANDO A PASTA DE ARMAZENAMENTO DO BACKUP
                if (!Directory.Exists(Global.LocalPath + @"\sistemas\MechTech"))
                {
                    Directory.CreateDirectory(Global.LocalPath + @"\sistemas\MechTech");
                }

                if (!Directory.Exists(Global.LocalPath + @"\sistemas\MechTech\" + Global.Sistema.ToString()))
                {
                    Directory.CreateDirectory(Global.LocalPath + @"\sistemas\MechTech\" + Global.Sistema.ToString());
                }

                // NOME DO ARQUIVO DE BACKUP CONFORME A VERSÃO DO POSTGRES
                if (VersaoPostGres.Substring(0, 1) != "7")
                {
                    ArqDestino = string.Format(Global.LocalPath + @"\sistemas\MechTech\" + Global.Sistema.ToString() + "\\bkp000" + bkp + ".fc");
                }
                else
                {
                    ArqDestino = string.Format(Global.LocalPath + @"\sistemas\MechTech\" + Global.Sistema.ToString() + "\\bkp000" + bkp + ".sql");
                }

                // CRIANDO ARQUIVO DE BAT
                FileInfo arquivo = new FileInfo(Global.LocalPath + @"\sistemas\MechTech\" + Global.Sistema.ToString() + "\\backup.bat");
                if (arquivo.Exists)
                {
                    arquivo.Delete();
                }
                StreamWriter arquivoentrada = new StreamWriter(Global.LocalPath + @"\sistemas\MechTech\" + Global.Sistema.ToString() + "\\backup.bat");
                //arquivoentrada.WriteLine("ECHO OFF");
                arquivoentrada.WriteLine("@set PGPASSWORD="******"cls");
                arquivoentrada.WriteLine("@Echo Processo de backup em execução. Aguarde...");

                // ACIONANDO O PG_DUMP CONFORME A VERSÃO DO POSTGRES
                switch (VersaoPostGres)
                {
                case "93":
                    //arquivoentrada.WriteLine("@" + Global.LocalPath + "\\sistemas\\" + Global.Sistema.ToString() + "\\postgres\\93\\pg_dump93.exe -U" + usuario + " -h" + Servidor + " -p" + porta + " -i -v -Fc -f" + ArqDestino + " " + BancoDados + " 2> " + ArqDestino + ".log");
                    arquivoentrada.WriteLine("@" + Global.LocalPath + "\\sistemas\\" + "MechTech" + "\\postgres\\93\\pg_dump93.exe -U" + usuario + " -h" + Servidor + " -p" + porta + " -i -v -Fc -f" + ArqDestino + " " + BancoDados + " 2> " + ArqDestino + ".log");
                    break;

                case "91":
                    arquivoentrada.WriteLine("@" + Global.LocalPath + "\\sistemas\\" + Global.Sistema.ToString() + "\\postgres\\91\\pg_dump91.exe -U" + usuario + " -h" + Servidor + " -p" + porta + " -i -v -Fc -f" + ArqDestino + " " + BancoDados + " 2> " + ArqDestino + ".log");
                    break;

                case "90":
                    arquivoentrada.WriteLine("@" + Global.LocalPath + "\\sistemas\\" + Global.Sistema.ToString() + "\\postgres\\90\\pg_dump90.exe -U" + usuario + " -h" + Servidor + " -p" + porta + " -i -v -Fc -f" + ArqDestino + " " + BancoDados + " 2> " + ArqDestino + ".log");
                    break;

                case "82":
                    arquivoentrada.WriteLine("@" + Global.LocalPath + "\\sistemas\\" + Global.Sistema.ToString() + "\\postgres\\82\\pg_dump82.exe -U" + usuario + " -h" + Servidor + " -p" + porta + " -i -v -Fc -f" + ArqDestino + " " + BancoDados + " 2> " + ArqDestino + ".log");
                    break;

                case "81":
                    arquivoentrada.WriteLine("@" + Global.LocalPath + "\\sistemas\\" + Global.Sistema.ToString() + "\\postgres\\82\\pg_dump81.exe -U" + usuario + " -h" + Servidor + " -p" + porta + " -i -v -Fc -f" + ArqDestino + " " + BancoDados + " 2> " + ArqDestino + ".log");
                    break;

                default:
                    if (VersaoPostGres.Substring(0, 1) == "7")
                    {
                        arquivoentrada.WriteLine(Global.LocalPath + @"\\sistemas\\" + Global.Sistema.ToString() + "\\postgres\\82\\pg_dump7.exe -U" + usuario + " -h" + Servidor + " -p" + porta + " -i -v -f" + ArqDestino + " " + BancoDados + " 2> " + ArqDestino + ".log");
                    }
                    break;
                }

                arquivoentrada.Close();

                Process backup = new Process();
                backup.StartInfo.FileName       = Global.LocalPath + @"\sistemas\MechTech\" + Global.Sistema.ToString() + "\\backup.bat";
                backup.StartInfo.WindowStyle    = ProcessWindowStyle.Hidden;
                backup.StartInfo.Verb           = "Open";
                backup.StartInfo.CreateNoWindow = true;

                backup.Start();

                backup.WaitForExit();

                if (backup.ExitCode != 0)
                {
                    arquivo.Delete();
                    ErroBackup.AppendLine("Falha na execução do Backup.");
                    ErroBackup.AppendLine("Códido de retorno " + backup.ExitCode.ToString() + " recebido.");
                    e.Result = "Código de saída " + backup.ExitCode;
                    return;
                }

                arquivo = new FileInfo(Global.LocalPath + @"\sistemas\MechTech\" + Global.Sistema.ToString() + "\\backup.bat");
                if (arquivo.Exists)
                {
                    arquivo.Delete();
                }

                // REGISTRANDO O BACKUP
                BackupResultado.Data      = DateTime.Today;
                BackupResultado.Hora      = new TimeSpan(DateTime.Now.Hour, DateTime.Now.Minute, 0);
                BackupResultado.Usuario   = Global.UsuarioAtivo;
                BackupResultado.Maquina   = Environment.MachineName;
                BackupResultado.Nomedados = "bkp000" + bkp;

                if (VersaoPostGres.Substring(0, 1) != "7")
                {
                    BackupResultado.Nomeempresa = "bkp000" + bkp + ".fc";
                }
                else
                {
                    BackupResultado.Nomeempresa = "bkp000" + bkp + ".sql";
                }
                FileInfo fi = new FileInfo(ArqDestino);
                BackupResultado.Tamanho = (int)fi.Length;
                BackupResultado.Versao  = Global.VersaoSistema;
                BackupResultado.Banco   = VersaoBanco.Substring(0, 50);
                backupbo.Insert(BackupResultado);

                if (backupbo.MonitoraBackup())
                {
                    while (BackupResultado.Versao.IndexOf(".") != -1)
                    {
                        BackupResultado.Versao = BackupResultado.Versao.Remove(BackupResultado.Versao.IndexOf("."), 1);
                    }

                    int filial = backupbo.GetFilialBackup();
                    //bool RegistroMW = backupbo.InsertMW(BackupResultado, Global.Sistema.ToString(), filial);
                    //if (!RegistroMW)
                    //{
                    //    ErroBackup.AppendLine("Não foi possível registrar a execução do backup na MECHTECH");
                    //    ErroBackup.AppendLine("Verifique se há uma conexão de internet disponível.");
                    //}
                }
            }
            catch (Exception ex)
            {
                ErroBackup.AppendLine("Falha na execução do Backup.");
                ErroBackup.AppendLine(ex.Message);
                e.Result = ex.Message;
            }
        }