Sistema completo para Backup/Restore com Firebird - Parte II
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 II -
Restore
Na primeira parte deste artigo (http://www.devmedia.com.br/articles/viewcomp.asp?comp=4885), você viu como usar o
componente TIBBackupService para criar uma aplicação com a opção de fazer o
backup internamente sem a necessidade de usar um segundo programa para isso.
O
que eu mostrarei agora, é como executar o restore do
backup que a sua aplicação criou. O componente a ser usado agora é
TIBRestoreService que também é nativo do Delphi 7 e pode ser encontrado
na
paleta interbase admin. A codificação não muda muito, veja.
procedure TFRestaurarBackup.BTRestaurarBackupClick(Sender:
TObject); begin try if
not OpenDialog1.Execute then//se
não selecionar o arquivo de backup Exit; //cancela
o procedimento Memo1.Clear; BTRestaurarBackup.Enabled:=False; Memo1.Lines.Add('Preparando
para restaurar o backup...'); Memo1.Lines.Add('');
with
IBRestoreService1 do begin DMBanco.IBDB.Connected:=False;//desconecta da base DatabaseName.Clear;
DatabaseName.Add(FPrincipal.EBase.Text);//caminho
da base ServerName:=FPrincipal.EServ.Text;//nome do servidor BackupFile.Clear; BackupFile.Add(OpenDialog1.FileName);//caminho do arquivo de backup 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:=[]; Options:=[CreateNewDB]; {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 CBDesativarIndices.Checked then Options:=Options+[DeactivateIndexes]; if CBSemShadow.Checked then Options:=Options+[NoShadow]; if
CBSemValidar.Checked then Options:=Options+[NoValidityCheck]; if
CBUmaTabela.Checked then Options:=Options+[OneRelationAtATime]; if
CBSubstituir.Checked then Options:=Options+[Replace];
{a propriedade verbose do TIBRestoreService especifica se durante o processo de restauração será retornado para a aplicação o detalhamento da execução} Verbose:=CBDetalhes.Checked;
Memo1.Lines.Add(' Desativar indices: '+BoolToStr(CBDesativarIndices.Checked)); Memo1.Lines.Add(' Restaurar arquivo espelho: '+BoolToStr(not CBSemShadow.Checked)); Memo1.Lines.Add(' Validar regras de integridade: '+BoolToStr(not CBSemValidar.Checked)); Memo1.Lines.Add(' Restaurar uma tabela por vez: '+BoolToStr(CBUmaTabela.Checked)); Memo1.Lines.Add(' Nome do servidor: '+ServerName); Memo1.Lines.Add(''); Active:=True;//ativa o servico de restauração, mais ainda nao inicia. Memo1.Lines.Add(''); Memo1.Lines.Add('/***INICIO***\'); Application.ProcessMessages; Memo1.Lines.Add(''); try ServiceStart;//inicia o restore while
not Eof do begin {assim
como no backup, conforme a restauração vai sendo executada os detalhes da execução podem ser lidos
através da função GetNextLine} Memo1.Lines.Add(GetNextLine); end; finally end; Active:=False;//desativa o serviço de restore Memo1.Lines.Add(''); Memo1.Lines.Add('/****FIM****\'); end;
Memo1.Lines.Add(''); Memo1.Lines.Add(''); Memo1.Lines.Add('Backup restaurado com sucesso.'); DMBanco.IBDB.Connected:=True;//conecta o sistema na base de dados BTRestaurarBackup.Enabled:=True; except on
E: Exception do begin Memo1.Lines.Add('Ocorreu um erro inesperado. O restore 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 BTRestaurarBackup.Enabled:=True; end; end; end;
|
Listagem 1 – Restaurando o backup da base de dados
Você pode obter mais informações sobre o que são todas as opções
de restauração utilizadas neste artigo e também as opções de backup, neste
artigo: http://www.devmedia.com.br/articles/viewcomp.asp?comp=4877.
No arquivo de download você vai encontrar o exemplo
completo incluindo o backup, feito na primeira parte do artigo.
Você viu que não há segredos para a execução de
backup/restore. A codificação é simples e você ainda pode dar mais garantia de
segurança para o seu cliente.
2 COMENTÁRIOS
[Fechar]
Este post é fechado - você precisa ter acesso ao post para incluir um comentário.
Diogo Moraes Antunes
Bom dia, Baixei os fontes para realização do backup e identifiquei o mesmo erro que tenho aqui no meu projeto. Quando faço o backup de uma base de dados em um servidor salvando o fbk em um terminal, este bakup não salva. E não da nenhum erro, simplismente não salva o arquivo.
Vocês ja viram isso acontecer? Tem alguma Solução?
Sds
Diogo
em 4/10/2011 09:44 -
Responder
[Comentário do autor]
Rafael Stavarengo
Diogo, Usar a API de serviços, como foi feito neste post, tem uma grande desvantagem: você não consegue salvar o FBK na máquina que executou o backup. Com a API de serviços o arquivo FBK sempre será salvo na máquina onde o banco de dados está, ou seja, no servidor.
Por tanto ao definir o caminho de origem do arquivo FBK você deve definir um caminho que exista no servidor, pois o FBK será salvo lá.
Leia este artigo para saber como criar backups cujo FBK pode ser salvo em qualquer máquina: http://www.devmedia.com.br/articles/viewcomp.asp?comp=4877
em 5/10/2011 07:39 -
Responder
[Este post ainda não foi associado a uma sequência]
Publicidade
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
0
[Fechar]
Você precisa estar logado para dar um feedback.
Clique aqui para efetuar o login
[Fechar]
Este post está disponível somente para quem possui Créditos DevMedia. (Ele não está associado a nenhuma publicação 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
[Fechar]
Este é um post fechado - Você precisa ter acesso ao post para habilitar os links de download.
|