Restore de um arquivo GBk
03/03/2006
0
Pessoal eu tenho um sistema que efetua a geração de do bakup em um arquivo GBK. Porém eu gostaria de desenvolver algo que possa gerar automaticamente este arquivo GBK.... e uma outra aplicação que faça a restauração deste arquivo.
Estive pesquisando mas achei pouca coisa.
Se alguém tiver algo referente poderia postar de que forma eu poderia fazer isso
Abraço
Wagner
Wagnermarrane
Posts
03/03/2006
Paullsoftware
No Delphi 7 Tem os componentes da paleta [b:cc95d0a873]Interbase Admin[/b:cc95d0a873] nela existe dois componentes que uso são eles: [b:cc95d0a873]TIbBackupService[/b:cc95d0a873] e [b:cc95d0a873]TIbRestoreService[/b:cc95d0a873]...
os códigos são +/- assim:
para Criar o backup...
Try with IBBackupService1 do begin Attach; DatabaseName := Edit1.Text; BackupFile.Add(Edit2.Text); Active := True; ServiceStart; ShowMessage(´Backup realizado com sucesso´); end; except on msg:exception do MessageDlg(´Ocorreu o seguinte erro:´+#10+msg.Message,mtWarning,[mbOK],0); end;
para restaurar...
Try with IBRestoreService1 do begin Attach; Options := [Replace]; DatabaseName.Add(Edit4.Text); BackupFile.Add(Edit3.Text); Active := True; ServiceStart; ShowMessage(´Restore realizado com sucesso´); end; except on msg:exception do MessageDlg(´Ocorreu o seguinte erro:´+#10+msg.Message,mtWarning,[mbOK],0); end
...
achei um artigo que mostra o uso desses componentes segue o link abaixo: [url]http://www.sqlmagazine.com.br/Colunistas/LucianoPimenta/05_Backup_FB_IB.asp[/url] do [b:cc95d0a873]Luciano Pimenta[/b:cc95d0a873]...
espero ter ajudado! :wink:
06/03/2006
Wagnermarrane
[b:c9a054c304]First chance exception at $77E649D3. Exception class EFOpenError with message ´Cannot open file ´C:\Arquivos de programas\Abcs\Premium\BD\premium.gbk´. O arquivo já está sendo usado por outro processo´. Process FTPSend.exe (3556)[/b:c9a054c304]
o codigo que eu montei é este:
procedure TSendFTP.BackupClick(Sender: TObject); var Arq_DB, Arq_Backup : string; begin Arq_DB:=´C:\Arquivos de programas\abcs\Premium\BD\premium.gdb´; Arq_Backup:=´C:\Arquivos de programas\abcs\Premium\BD\premium.gbk´; Try with IBBackupService1 do begin active:=true; // Attach; DatabaseName := arq_DB; BackupFile.Add(arq_Backup); Active := True; ServiceStart; TrayIcon.ShowBalloonHint(´FTP´,´Backup realizado com sucesso´, bitInfo, 10); active:=false; end; compactar.Click; except on msg:exception do TrayIcon.ShowBalloonHint(´FTP´,´Ocorreu um erro na geração de backup´, bitError, 10); end; end;
ele starta o serviço, gera o arquivo, porem eu naum consigo progresseguir com outra operação com o arquivo gerado.
Abraço
Wagner
06/03/2006
Paullsoftware
06/03/2006
Wagnermarrane
estive pesquisando de que formar eu poderia dar o stop no componente, porém não achei nada relacionado...
Vc sabe qual parametro tenho q passar.
Abraço
Wagner
06/03/2006
Delphi32
Faça o seguinte:
IBBackupService1.ServiceStart; while not IBBackupService1.Eof do //>>Aqui você assegura que o fluxo terminar begin //>>só continua quando o serviço de criar o arquivo. //>>Faça alguma coisa ou nada... end; //>>Aqui você coloca os próximos comandos...
t+!
06/03/2006
Wagnermarrane
IBBackupService1.ServiceStart; while not IBBackupService1.Eof do //>>Aqui você assegura que o fluxo terminar begin //>>só continua quando o serviço de criar o arquivo. //>>Faça alguma coisa ou nada... end; //>>Aqui você coloca os próximos comandos...
cara eu monte este código, pelo o q eu entendi, porém estou outro erro:
procedure TSendFTP.BackupClick(Sender: TObject); var Arq_DB, Arq_Backup : string; begin Arq_DB:=´C:\Arquivos de programas\abcs\Premium\BD\premium.gdb´; Arq_Backup:=´C:\Arquivos de programas\abcs\Premium\BD\premium.gbk´; while not eof do begin Try with IBBackupService1 do begin DatabaseName := arq_DB; BackupFile.Add(arq_Backup); Active := True; ServiceStart; TrayIcon.ShowBalloonHint(´FTP´,´Backup realizado com sucesso´, bitInfo, 10); end; except on msg:exception do TrayIcon.ShowBalloonHint(´FTP´,´Ocorreu um erro na geração de backup´, bitError, 10); end; end; compactar.Click; end;
[b:125406b08f]First chance exception at $77E649D3. Exception class EInOutError with message ´I/O error 6´. Process FTPSend.exe (3108)[/b:125406b08f]
06/03/2006
Delphi32
procedure TSendFTP.BackupClick(Sender: TObject); var Arq_DB, Arq_Backup : string; begin Arq_DB:=´C:\Arquivos de programas\abcs\Premium\BD\premium.gdb´; Arq_Backup:=´C:\Arquivos de programas\abcs\Premium\BD\premium.gbk´; Try with IBBackupService1 do begin active:=true; // Attach; DatabaseName := arq_DB; BackupFile.Add(arq_Backup); Active := True; ServiceStart; while not eof do begin // end; TrayIcon.ShowBalloonHint(´FTP´,´Backup realizado com sucesso´, bitInfo, 10); active:=false; end; compactar.Click; except on msg:exception do TrayIcon.ShowBalloonHint(´FTP´,´Ocorreu um erro na geração de backup´, bitError, 10); end; end;
t+!
07/03/2006
Wagnermarrane
procedure TSendFTP.BackupClick(Sender: TObject); var Arq_DB, Arq_Backup : string; begin Arq_DB:=´C:\Arquivos de programas\abcs\Premium\BD\premium.gdb´; Arq_Backup:=´C:\Arquivos de programas\abcs\Premium\BD\premium.gbk´; Try with IBBackupService1 do begin active:=true; // Attach; DatabaseName := arq_DB; BackupFile.Add(arq_Backup); Active := True; ServiceStart; while not eof do begin // end;
08/03/2006
Delphi32
ps.: Troquei o nome dos componentes para facilitar. No código abaixo também coloquei o usuário e senha padrão do interbase/firebird.
Screen.Cursor := crHourGlass; try Memo1.Lines.Clear; Memo1.Lines.Add(´Iniciando o backup do banco de dados...´); Application.ProcessMessages; with IBBackupService1 do begin ServerName := ´localhost´; LoginPrompt := False; Params.Add(´user_name=SYSDBA´); Params.Add(´password=masterkey´); Active := True; try Verbose := True; Options := []; //if CheckBox1.Checked then Options := Options + [MetadataOnly]; //if not CheckBox2.Checked then Options := Options + [NonTransportable]; //if CheckBox3.Checked then Options := Options + [IgnoreLimbo]; DatabaseName := ´C:\CAMINHO_DO_SEU_BANCO.FDB´; BackupFile.Clear; BackupFile.Add(´C:\NOME_DO_ARQUIVO_DE_BACKUP.FBK´); ServiceStart; while not Eof do begin Memo1.Lines.Add(GetNextLine); Application.ProcessMessages; end; finally Active := False; end; end; Memo1.Lines.Add(´Backup finalizado...´); Application.ProcessMessages; ShowMessage(´O Backup foi concluído com sucesso!´); except ShowMessage(´Erro ao tentar fazer backup do banco de dados!´); end; Screen.Cursor := crDefault;
Repare que eu coloco um Memo que mostra as mensagens do progresso do backup. Faça isso também para saber se está realmente travando ou não.
t+!
08/03/2006
Delphi32
with IBRestoreService1 do begin ServerName := ´localhost´; LoginPrompt := False; Params.Add(´user_name=SYSDBA´); Params.Add(´password=masterkey´); Application.ProcessMessages; Active := True; try Verbose := True; Options := [Replace]; PageBuffers := 3000; PageSize := 4096; DatabaseName.Add(´C:\NOME_DO_BANCO.FDB´); BackupFile.Add(´C:\NOME_DO_ARQUIVO_DE_BACKUP.FBK´); ServiceStart; while not Eof do begin Memo1.Lines.Add(GetNextLine); Application.ProcessMessages; end; finally Active := False; end; end;
t+!
Clique aqui para fazer login e interagir na Comunidade :)