Backup no FB/IB

Uma das ferramentas mais importantes em um sistema comercial, sem dúvida nenhuma, é a realização do backup/restore da base de dados, não só por questões de segurança como também de performance. E para o FB/IB existem ótimas ferramentas free e comerciais que realizam essa tarefa. O que irei mostrar neste artigo é como criar, no Delphi, uma aplicação simples que realize o backup/restore de uma base de dados.

Utilizaremos os componentes da paleta InterBase Admin, mais precisamente os componentes IBBackupService e IBRestoreService. Crie uma aplicação Delphi e adicione os seguintes componentes (além dos mencionados anteriormente): um PageControl, quatro BitBtns, quatro Labels, quatro Edits, um ImageList e um OpenDialog. Distribua os componentes no formulário conforme as Figuras 1 e 2.

17-05pic01.JPG
Figura 1.
Aba do backup do banco de dados


17-05pic02.JPG
Figura 2.
Aba do restore do banco de dados

No OpenDialog altere a propriedade Filter, conforme a Figura 3.

17-05pic03.JPG
Figura 3.
Alterando a propriedade Filter do OpenDialog

Dê um duplo clique no IBBackupService1 e configure-o conforme a Figura 4.

17-05pic04.JPG
Figura 4.
Configurando o IBBackupService

Vamos codificar a aba Backup primeiramente, adicionando no botão (...) que localiza o banco, o seguinte código:

if OpenDialog1.Execute then
  Edit1.Text := OpenDialog1.FileName;

Caso seja escolhido um arquivo na caixa de diálogo (método Execute), o Edit será preenchido com o arquivo escolhido. No botão Backup digite o seguinte código:

with IBBackupService1 do
begin
  Attach;
  DatabaseName := Edit1.Text;
  BackupFile.Add(Edit2.Text);
  Active := True;
  ServiceStart;
  ShowMessage('Backup realizado com sucesso');
end;

O código é bem simples, atribuímos na propriedade Database o arquivo escolhido, indicamos o arquivo de backup (BackupFile.Add), ativamos o componente e iniciamos o serviço para realizar o backup. Rode a aplicação, localize um arquivo e indique no Edit qual o local do arquivo de backup (arquivo GBK). Veja na Figura 5 a aplicação em execução.

17-05pic05.JPG
Figura 5.
Aplicação realizando o backup do banco de dados

A técnica para o restore é praticamente a mesma. O botão para localizar o arquivo de backup deve ter o mesmo código do botão que localizar o banco (apenas alterando o Edit que receberá o nome do arquivo de backup). No botão Restore temos o seguinte código:

with IBRestoreService1 do
begin
  Attach;
  Options := [Replace];
  DatabaseName.Add(Edit4.Text);
  BackupFile.Add(Edit3.Text);
  Active := True;
  ServiceStart;
  ShowMessage('Restore realizado com sucesso');
end;

A diferença maior em relação ao código anterior é a opção para sobrescrever o arquivo do banco (Replace). Rode a aplicação (não esqueça de configurar o IBRestoreService1, semelhante ao IBBackupService1), localize o arquivo de backup (não esqueça de alterar a opção Tipo de arquivo, na caixa de diálogo), indique o local onde a base de dados será restaurada e pronto seu backup está restaurado (Figura 6).

17-05pic06.JPG
Figura 6.
Aplicação realizando o restore do banco de dados

Já possuímos um projeto que realiza backup/restore. Poderíamos adicionar horários pré-estabelecidos para o backup/restore ser realizado (tipo um agendador). Quem quiser incrementar o projeto, mande suas sugestões para lucianopimenta@clubedelphi.net, que estarei disponibilizando os melhores projetos nessa coluna. Quem tiver outras idéias também pode enviar.

A aplicação completa pode ser baixada em: http://www.devmedia.com.br/sqlmagazine/Downloads/