Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Sistema completo para Backup/Restore com Firebird - Parte I

Veja como implementar no seu sistema a opção para a execução de backup/restore sem a necessidade de usar um programa de terceiro.

Sistema completo para Backup/Restore com Firebird

Parte I - Backup

 

Sem dúvida a realização do backup/restore da base de dados, indiferente do SGDB utilizado, é muito importante. Existem muitas aplicações para a realização dessa rotina, inclusive na versão free, porém, nada melhor do que o seu sistema fazer essa rotina internamente, de maneira automática ou sempre que o usuário quiser.

 

Esse artigo ensina como usar o componente TIBBackupService para que você possa criar uma aplicação com a opção de fazer o backup sempre que necessário, com uma interface fácil para o usuário sem a necessidade de usar um programa de terceiro. No arquivo zip, disponível para download, você vai encontrar uma base de dados e o código fonte de uma aplicação para acessar essa base. Na aplicação você encontrará uma tela para conexão com a base de dados, uma para executar movimentações na tabela de cliente e uma outra para execução do backup.

 

Como o intuído desse artigo é o de ensinar como fazer backup/restore através do Delphi, não explicarei aqui o processo de construção da base de dados e nem da aplicação que fará conexão com a base. Nós nos concentraremos apenas no código para execução do backup. No próximo artigo eu explicarei como fazer o restore da base de dados.

 

Como dito acima, para a execução do backup nós usaremos o componente nativo no Delphi 7 TIBBackupService. Ele pode ser encontrado na paleta InterBase Admin.

 

Então mãos a obra.

 

procedure TFGerarBackup.BTGeraBackClick(Sender: TObject);

begin

  try

    if not SDArquBack.Execute then//se o usuário não informar onde será salvo o arquivo de backup
      Exit;                       //cancela o procedimento
    Memo1.Clear;
    BTGeraBack.Enabled:=False;
    Memo1.Lines.Add('Preparando para gerar o backup...');
    Memo1.Lines.Add('');

    with IBBackupService1 do
    begin
      DMBanco.IBDB.Connected:=False;//desconecta da base de dados
      DatabaseName:=FPrincipal.EBase.Text;//caminho da base de dados
      ServerName:=FPrincipal.EServ.Text;//nome do servidor
      BackupFile.Clear;
      BackupFile.Add(SDArquBack.FileName);//adiciona o caminho do arquivo de backup escolhido pelo usuário
      Protocol:=TCP;//protocolo de conexão
      Params.Clear;
      Params.Add('user_name=SYSDBA');//nome de usuário
      Params.Add('password=masterkey');//senha do usuário

      Options:=[];//limpa a propriedade option
      {o bloco de if abaixo esta adicionando as opções de restauração de acordo com o  que o usuário escolheu. Após esta listagem você encontra um link para um outro artigo onde você encontra mais informações sobre essas e outras opções de restauração}
      if CBIgnoChec.Checked then
        Options:=Options+[IgnoreChecksums];
      if CBIgnoLimb.Checked then
        Options:=Options+[IgnoreLimbo];
      if not CBRecoLixo.Checked then
        Options:=Options+[NoGarbageCollection];
      if not CBTran.Checked then
        Options:=Options+[NonTransportable];

      {a propriedade verbose do TIBBackupService especifica
      se durante o processo de backup será retornado para a
      aplicação o detalhamento da execução}
      Verbose:=CBDetalhes.Checked;

      Memo1.Lines.Add('  Ignorar checksum: '+BoolToStr(CBIgnoChec.Checked));
      Memo1.Lines.Add('  Ignorar transações em limbo: '+BoolToStr(CBIgnoLimb.Checked));
      Memo1.Lines.Add('  Coletar lixo: '+BoolToStr(CBRecoLixo.Checked));
      Memo1.Lines.Add('  Formato transportável: '+BoolToStr(CBTran.Checked));
      Memo1.Lines.Add('  Verbose: '+BoolToStr(CBTran.Checked));
      Memo1.Lines.Add('  Nome do servidor: '+ServerName);
      Memo1.Lines.Add('');
      Active:=True;//ativa o serviço de backup, mais ainda não inicia.
      Memo1.Lines.Add('');
      Memo1.Lines.Add('/***INICIO***\');
      Application.ProcessMessages;
      Memo1.Lines.Add('');
      try
        ServiceStart;//inicia o processo de backup
        while not Eof do
        begin
          {conforme o backup vai sendo executado o nos podemos pegar os detalhes da sua execução através da função GetNextLine}
          Memo1.Lines.Add(GetNextLine);
        end;
      finally
      end;
      Active:=False;//desativa o serviço de backup
      Memo1.Lines.Add('');
      Memo1.Lines.Add('/****FIM****\');
    end;
    Memo1.Lines.Add(''); Memo1.Lines.Add('');
    Memo1.Lines.Add('Backup concluído.');
    DMBanco.IBDB.Connected:=True;//conecta o sistema na base de dados
    BTGeraBack.Enabled:=True;
  except
    on E: Exception do
    begin
      Memo1.Lines.Add('Ocorreu um erro inesperado. O backup não foi concluído.');
      Memo1.Lines.Add('Informações da exceção:');
      Memo1.Lines.Add('  '+E.Message);
      DMBanco.IBDB.Connected:=True;//conecta o sistema na base de dados
      BTGeraBack.Enabled:=True;
    end;
  end;

end;

Listagem 1 – Executando o backup da base de dados

 

Mostrar os detalhes da execução do backup nem sempre é interessante, visto que isso fará com que o tempo para o término do processo aumente consideravelmente.

 

Você pode obter mais informações sobre o que são todas as opções de backup utilizadas neste artigo (entre outras), lendo este outro artigo: http://www.devmedia.com.br/articles/viewcomp.asp?comp=4877.

 

No próximo artigo eu falarei sobre o restore da base de dados. Até lá.





    13 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Frostlost
Cade o arquivo para download?


em 16/11/2007 20:29 - Responder

 

  Rafael Stavarengo
cara o arquivo de download ta ai


em 3/12/2007 17:17 - Responder
 

  Livia Martella
Rafael você tem algum e-mail que possamos dividir experiencias sobre o delphi?


em 6/3/2008 13:27 - Responder
 

[Comentário do autor]   Rafael Stavarengo
ola Livia desculpe a demora em responder tenho um email sim... se precisar estarei a disposição em faelsta@hotmail.com


em 1/7/2008 20:35 - Responder
 

João Paulo Souza Silva
Esta dando um erro no backup '--------------------------- Debugger Exception Notification --------------------------- Project MATERIAIS.exe raised exception class EIBInterBaseError with message 'message length error (encountered 96, expected 92)'. Process stopped. Use Step or Run to continue. --------------------------- OK Help --------------------------- O que pode ser? Debuguei e o erro é quando está preenchendo as linhas do memo.


em 14/2/2008 22:25 - Responder

 

Renyldo
onde esta o arquivo para downloads.


em 6/5/2008 09:50 - Responder

 

  Fabio
Amigo, o link p/ download ta abaixo da foto do criador do post, escrito em preto com funto amarelo q diz: "Clique aqui para fazer o download associado a este post"


em 9/6/2008 11:19 - Responder
 

Equipe Devmedia
2 excelentes artigos Rafael, parabéns e obrigado! Me ajudou muito.


em 22/4/2009 16:55 - Responder

 

[Comentário do autor]   Stavarengo, Rafael
Obrigado! [ ]


em 27/5/2009 16:48 - Responder
 

Willian Rafhael Nunes Custódio
olá!!
belo post, me ajudou muito
quero saber como colocar um progressbar para mostrar o andamento do backup... tem como alguem ajudar?

obrigado!!


em 8/5/2009 11:00 - Responder

 

[Comentário do autor]   Stavarengo, Rafael
Willian, um PorgressBar fica dificil pois voce não tem como saber quantas "ciclos" ainda faltam para que o FireBird termine o backup, porem você pode colocar qualquer coisa que fique se mexendo para que o usuário veja que o sistema nao travou. Essa "coisa" que vai ficar se mexendo pode ser um GIF, um objeto que fica trocando de cor a cada ciclo ou até mesmo um ProgressBar que fica indo ate o fim e voltando para indicar que o programa nao travou.


em 27/5/2009 16:53 - Responder
 

Everton Antonio Da Costa

Existe a possibilidade de um Estação (Cliente) realizar o BackUp do servidor ?



em 6/1/2010 14:47 - Responder

 

[Comentário do autor]   Stavarengo, Rafael

Everton.

Ou eu não entendi bem sua pergunta ou este artigo explica como fazer o que vc perguntou.
 
Porem, se o que vc está perguntando é como fazer fazer para o arquivo de backup poder ser salvo no servidor a partir de um backup feito no terminal, então este artigo vai responder sua pergunta:  http://www.devmedia.com.br/articles/viewcomp.asp?comp=4877


em 9/2/2010 15:53 - Responder
 



[Este post ainda não foi associado a uma sequência]
Autor
Rafael Stavarengo

Programador de sistemas da Cheina Informática com 9 anos de experiência, integrante da equipe editorial da revista Clube Delphi. Domínio em Java, PHP e UML. Sólido conhecimento em Design Patterns e metodologias ágeis. Graduado em Análise e Desenvolvimento de Sistemas pela UNIPAR. Blog: http://stava...


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
3   1
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível para assinantes da ClubeDelphi ou para quem possui Créditos DevMedia.

  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03