ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Backup / Restore (RESOLVIDO)

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Santinello
Novato
Novato


Registrado: Sábado, 1 de Dezembro de 2018
Mensagens: 30

MensagemEnviada: Qua Fev 13, 2019 7:15 am    Assunto: Backup / Restore (RESOLVIDO) Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
marcos.dario
Novato
Novato


Registrado: Sexta-Feira, 29 de Janeiro de 2016
Mensagens: 2

MensagemEnviada: Qui Ago 22, 2019 10:07 am    Assunto: Responder com Citação

cara, tenta colocar o componente como de restore com a propriedade LOGIN PROMPT = False
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10445
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Dom Ago 25, 2019 2:23 pm    Assunto: Responder com Citação

Veja este demo que fiz há algum tempo, já tinha passado para um usuário do fórum antes:
https://www.dropbox.com/s/3hnxup1ev9dsg8y/Backup_Restore_Demo1.zip?dl=0

Bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB