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