|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
Santinello Novato
Registrado: Sábado, 1 de Dezembro de 2018 Mensagens: 30
|
Enviada: Qua Fev 13, 2019 7:15 am Assunto: Backup / Restore (RESOLVIDO) |
|
|
Bom dia.
Peguei um código de Back/Rest na net, mas não estou conseguindo contato com o desenvolvedor para tirar uma dúvida. Vamos lá.
Trata-se de um sistema desvinculado ao meu sistema, mas chamo o exec dele, pelo meu sistema. Ele faz o backup, aparentemente correto, mas no caso do Restore, dá erro
- Prjprincipalbackup - Operation cancelled at user's request. - OK ---
Agora, não to conseguindo achar o cancelamento.
Abaixo o codigo na integra
Código: | unit UntPrincipal;
interface
//direttiva para sumir uma mensagem de aviso que meu sistema
// roda apenas em Windown
// [Warning] Principal.pas(7): Unit 'FileCtrl' is specific to a platform
{$WARN UNIT_PLATFORM OFF}
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, FileCtrl, Buttons, IBServices, ComCtrls;
type
TFormPrincipalBackRest = class(TForm)
Memo1: TMemo;
OpenDialogBack: TOpenDialog;
IBBackupService1: TIBBackupService;
OpenDialogRestore: TOpenDialog;
IBRestoreService1: TIBRestoreService;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
GroupBoxBackUp: TGroupBox;
LabelSelecionaArqParaBackUp: TLabel;
BtnSelecioneArqBackUp: TSpeedButton;
LabelSalvarEm: TLabel;
LabelNomeArqBackUp: TLabel;
LabelUnudadeDestino: TLabel;
EdtArquivoBackUp: TEdit;
DirectoryListBoxSelectLOCALBakcUp: TDirectoryListBox;
EdtNomeBack: TEdit;
DriveComboBoxUnidadeDestino: TDriveComboBox;
BtnGravar: TButton;
cb_NoGarbageCollection: TCheckBox;
cb_NonTransportable: TCheckBox;
cb_IgnoreChecksums: TCheckBox;
cb_IgnoreLimbo: TCheckBox;
GroupBoxRestore: TGroupBox;
LabelSelecionaArqParaRestore: TLabel;
BtnSelecioneArqRestore: TSpeedButton;
SpeedButton1: TSpeedButton;
LabelEscolhaLocalParaRestauracao: TLabel;
BtnSelecioneLocalParaRestaurar: TSpeedButton;
EdtArquivoRestore: TEdit;
EdtLocalParaRestauracao: TEdit;
cb_Replace: TCheckBox;
cb_NoValidityCheck: TCheckBox;
procedure BtnSelecioneArqBackUpClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BtnGravarClick(Sender: TObject);
procedure BtnSelecioneArqRestoreClick(Sender: TObject);
procedure BtnSelecioneLocalParaRestaurarClick(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormPrincipalBackRest: TFormPrincipalBackRest;
implementation
{$R *.dfm}
procedure TFormPrincipalBackRest.BtnSelecioneArqBackUpClick(
Sender: TObject);
begin
// abrindo o caminho de onde o backup buscará o arquivo a copiar
OpenDialogBack.InitialDir := ExtractFilePath(Application.ExeName);
if OpenDialogBack.Execute then
EdtArquivoBackUp.Text := OpenDialogBack.FileName;
end;
procedure TFormPrincipalBackRest.FormCreate(Sender: TObject);
begin
DirectoryListBoxSelectLOCALBakcUp.Directory := 'C:\PROJETO POLI NUTRI\Backup_Restore'; // meu caminho para o backup
// DirectoryListBoxSelectLOCALBakcUp.Directory := ExtractFilePath(Application.ExeName); // caminho do professor Neri
ExtractFilePath(Application.ExeName);
EdtNomeBack.Text := 'POLINUTRI.FDB' + FormatDateTime ('DDMMYYYY', date) + '.back'; // dando nome ao backup
EdtArquivoBackUp.Text := 'C:\PROJETO POLI NUTRI\BD\POLINUTRI.FDB' // nome do arquivo a ser copiado
end;
procedure TFormPrincipalBackRest.BtnGravarClick(Sender: TObject);
begin
if EdtArquivoBackUp.Text = '' then
begin
Application.MessageBox('Selecione o Arquivo a ser copiado','Atenção', MB_APPLMODAL + MB_OK + MB_ICONWARNING);
EdtArquivoBackUp.SetFocus;
Exit;
end;
Screen.Cursor := crHourGlass; // faz com que o cursos mude enquanto o processo de backup está sendo efetuado
try
with IBBackupService1 do
begin
ServerName := 'Local Server';
LoginPrompt := False;
Params.Add('user_name=sysdba');
Params.Add('password=masterkey');
Active := True;
Verbose := True;
DatabaseName := EdtArquivoBackUp.Text;
BackupFile.Add(DirectoryListBoxSelectLOCALBakcUp.Directory + '\'+EdtNomeBack.Text);
Options := [];
if cb_IgnoreChecksums.Checked then
Options := Options + [IgnoreChecksums]; // esta opção serve quanto há algum problema no BD
// o ideal é que ela não ique marcada como default
if cb_IgnoreLimbo.Checked then
Options := Options + [IgnoreLimbo]; // ignorar transações incompletas
if cb_NonTransportable.Checked then
Options := Options + [NoGarbageCollection]; // esta opção limpa os registros que foram deletados e estão vazios
if cb_NonTransportable.Checked then
Options := Options + [NonTransportable]; // deixando marcado, voce usará seu sistema apenas em SO Windows
ServiceStart; // com isso iniciamos o processo de backup
while not Eof do
Memo1.Lines.Add(GetNextLine);
end;
Finally
ShowMessage('Backup efetuado com sucesso');
Screen.Cursor := crDefault; // retorna o cursor ao seu estado normal, ai termino do processo de backup
end;
Application.ProcessMessages; // apenas para garantir que todo o processo será executado
Application.Terminate;
end;
procedure TFormPrincipalBackRest.BtnSelecioneArqRestoreClick(
Sender: TObject);
begin
// abrindo o caminho de onde o backup buscará o arquivo a copiar
OpenDialogRestore.InitialDir := ExtractFilePath(Application.ExeName);
if OpenDialogRestore.Execute then
EdtArquivoRestore.Text := OpenDialogRestore.FileName;
end;
procedure TFormPrincipalBackRest.BtnSelecioneLocalParaRestaurarClick(
Sender: TObject);
begin
// abrindo o caminho de onde o backup buscará o arquivo a copiar
OpenDialogRestore.InitialDir := ExtractFilePath(Application.ExeName);
if OpenDialogRestore.Execute then
EdtLocalParaRestauracao.Text := OpenDialogRestore.FileName;
end;
procedure TFormPrincipalBackRest.SpeedButton1Click(Sender: TObject);
begin
try
begin
with IBRestoreService1 do
begin
ServerName := 'Local Server';
LoginPrompt := False;
Params.Add('user_name=sysdba');
Params.Add('password=masterkey');
Active := True;
Verbose := True;
DatabaseName.Add(EdtLocalParaRestauracao.Text);
BackupFile.Add(EdtArquivoRestore.Text);
Options := [];
if cb_Replace.Checked then
Options := Options + [Replace];
IF cb_NoValidityCheck.Checked then
Options := Options + [NoValidityCheck];
PageSize := 2048;
ServiceStart; // com isso iniciamos o processo de backup
while not Eof do
Memo1.Lines.Add(GetNextLine);
end;
end;
finally
end;
Application.ProcessMessages
end;
end. |
Se alguem puder me ajudar, agradeço.
Fausto Alencar |
|
Voltar ao Topo |
|
|
marcos.dario Novato
Registrado: Sexta-Feira, 29 de Janeiro de 2016 Mensagens: 2
|
Enviada: Qui Ago 22, 2019 10:07 am Assunto: |
|
|
cara, tenta colocar o componente como de restore com a propriedade LOGIN PROMPT = False |
|
Voltar ao Topo |
|
|
johnny-walker Moderador
Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
|
Voltar ao Topo |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|