Na primeira parte deste artigo, 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, clicando aqui.

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.