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