|
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.
|