Restore de um arquivo GBk
Boa tarde pessoal,
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
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
Curtidas 0
Respostas
Paullsoftware
03/03/2006
Qual o delphi que vc usar?
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...
para restaurar...
...
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:
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:
GOSTEI 0
Wagnermarrane
03/03/2006
muito obrigado...
Abraço
Abraço
GOSTEI 0
Wagnermarrane
03/03/2006
o código funcionou perfeitamente, porem quando eu peço para ele executar uma compressão após a geração do arquivo de backup ele acusa que o arquivo se encontra em uso
[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:
ele starta o serviço, gera o arquivo, porem eu naum consigo progresseguir com outra operação com o arquivo gerado.
Abraço
Wagner
[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
GOSTEI 0
Paullsoftware
03/03/2006
certo, aqui eu trabalho numa boa com esses componentes, tenta dar um stop no serviço fazer alguma outra rotina e depois continuar o serviço novamente...
GOSTEI 0
Wagnermarrane
03/03/2006
certo, aqui eu trabalho numa boa com esses componentes, tenta dar um stop no serviço fazer alguma outra rotina e depois continuar o serviço novamente...
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
GOSTEI 0
Delphi32
03/03/2006
olha, posso estar enganado, mas tenhoa impressão de que no momento que o comando btnCompactar.Click está sendo executado, o arquivo ainda não foi criado totalmente. Isso porque o ServiceStart inicia o processo, mas não aguarda que ele seja terminado para prosseguir.
Faça o seguinte:
t+!
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+!
GOSTEI 0
Wagnermarrane
03/03/2006
olha, posso estar enganado, mas tenhoa impressão de que no momento que o comando btnCompactar.Click está sendo executado, o arquivo ainda não foi criado totalmente. Isso porque o ServiceStart inicia o processo, mas não aguarda que ele seja terminado para prosseguir.
Faça o seguinte:
t+!
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]
GOSTEI 0
Delphi32
03/03/2006
Você colou o código no lugar errado. Use o seguinte:
t+!
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+!
GOSTEI 0
Wagnermarrane
03/03/2006
Você colou o código no lugar errado. Use o seguinte:
Cara o problemas é que trava e não sai
t+!
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;
GOSTEI 0
Wagnermarrane
03/03/2006
sobe - up
GOSTEI 0
Delphi32
03/03/2006
O banco é muito grande? porque acho que não está travado, mas sim fazendo o backup. Vou colocar a seguir o código que eu uso para fazer backup e você pode adaptá-lo para sua situação:
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.
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+!
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+!
GOSTEI 0
Delphi32
03/03/2006
cara, viajei... coloquei o código para fazer backup.... e o que você quer é restaurar, certo? aqui vai o código correto:
t+!
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+!
GOSTEI 0