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 

Restaurar FBK para Delphi

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
AndreZc
Membro Junior
Membro Junior


Registrado: Quinta-Feira, 22 de Abril de 2010
Mensagens: 383
Localização: Rio de Janeiro

MensagemEnviada: Qui Jan 06, 2011 3:00 pm    Assunto: Restaurar FBK para Delphi Responder com Citação

Olá,

eu gostaria de saber quais componentes eu uso para restaurar um arquivo FBK (Backup) ? Alguém tem uma boa referência ?

Tentei assim:

Citação:
F:\Arquivos de programas\Firebird\Firebird_2_5\bin>gbak -user SYSDBA -pas master
key -r -p 4096 -o f:\DADOS.fbk localhost:f:\DADOS.fdb
gbak: ERROR:Your user name and password are not defined. Ask your database admin
istrator to set up a Firebird login.
gbak:Exiting before completion due to errors

F:\Arquivos de programas\Firebird\Firebird_2_5\bin>gbak -user SYSDBA -pas master
key -r -p 4096 -o f:\DADOS.fbk localhost:f:\DADOS.fdb
gbak: ERROR:Your user name and password are not defined. Ask your database admin
istrator to set up a Firebird login.
gbak:Exiting before completion due to errors

F:\Arquivos de programas\Firebird\Firebird_2_5\bin>gbak -user SYSDBA -pas master
key -r -p 4096 -o f:\DADOS.fbk f:\DADOS.fdb
gbak: ERROR:Your user name and password are not defined. Ask your database admin
istrator to set up a Firebird login.
gbak:Exiting before completion due to errors


Mas como vocês podem ver, da erro.

Alguma sugestão ?

Muito obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
AndreZc
Membro Junior
Membro Junior


Registrado: Quinta-Feira, 22 de Abril de 2010
Mensagens: 383
Localização: Rio de Janeiro

MensagemEnviada: Qui Jan 06, 2011 3:49 pm    Assunto: Responder com Citação

Alguém por favor ? =o
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Keron
Experiente
Experiente


Registrado: Terça-Feira, 25 de Outubro de 2005
Mensagens: 463

MensagemEnviada: Qui Jan 06, 2011 9:53 pm    Assunto: Responder com Citação

Qual delphi vc utiliza?
_________________
Filho de Deus
em Cristo Jesus
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
AndreZc
Membro Junior
Membro Junior


Registrado: Quinta-Feira, 22 de Abril de 2010
Mensagens: 383
Localização: Rio de Janeiro

MensagemEnviada: Qui Jan 06, 2011 11:28 pm    Assunto: Responder com Citação

Keron escreveu:
Qual delphi vc utiliza?


Uso o 2010.

Obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Keron
Experiente
Experiente


Registrado: Terça-Feira, 25 de Outubro de 2005
Mensagens: 463

MensagemEnviada: Sex Jan 07, 2011 1:22 pm    Assunto: Responder com Citação

Veja se esse código abaixo ajuda

Código:
=============[ declarando a função ]
em private
   function ExecutaGBak(comando,BackupRestore:String):Boolean;






bt restore
==========
frmDados.SIACDados.Connected:=False;  // Desliga a base de dados
ExecutaGBak('restore.cmd','Restore'); // executa o restore - restore.cmd será substituido por um comando direto escrito em config
frmDados.SIACDados.Connected:=True;   // religa a base de dados

bt backup
=========
ExecutaGBak('c:\Arquivos de Programas\Firebird\Firebird_2_1\Bin\gbak.exe -v -b -user SYSDBA -pass masterkey  c:\Pasta\Banco.FDB c:\Backup\backup.fdk','Backup');
// a instrução 'c:\Arquivos ....' sere substituido por um comando direto vindo de config.ini



=================ExecutaGBak====================
function TFrmBackup.ExecutaGBak(comando,BackupRestore:String):Boolean;
var
StartUpInfo : TStartUpInfo;
ProcessInformation : TProcessInformation;
ProcessOk : Boolean;
SA : TSecurityAttributes;
StdOutPipeRead,
StdOutPipeWrite : THandle;
Buffer : array[0..16384] of Char;
TotalBytesAvail,
BytesLeftThisMessage,
BytesRead : Cardinal;
Linha : String;
begin
Result := False;
Application.ProcessMessages;
with SA do
   begin
   nLength := SizeOf(SA);
   bInheritHandle := True;
   lpSecurityDescriptor := nil;
   end;
CreatePipe(StdOutPipeRead, //read handle
StdOutPipeWrite, //write handle
@SA, //security attributes
0 //number of bytes reserved for pipe - 0 default
);
try
   with StartUpInfo do
      begin
      FillChar(StartUpInfo,SizeOf(StartUpInfo),0);
      cb := SizeOf(StartUpInfo);
      dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
      if (Win32Platform=VER_PLATFORM_WIN32_WINDOWS) then
         wShowWindow := SW_HIDE
      else
         wShowWindow := SW_SHOWMINNOACTIVE;
      hStdInput := GetStdHandle(STD_INPUT_HANDLE); // don't redirect std input
      hStdOutput := StdOutPipeWrite;
      hStdError := StdOutPipeWrite;
      end;
   ProcessOK :=
   CreateProcess(NIL,PChar(comando),NIL,NIL,True,IDLE_PRIORITY_CLASS or
   CREATE_NO_WINDOW,NIL,NIL,StartUpInfo,ProcessInformation);
   CloseHandle(StdOutPipeWrite);
   try
     Linha := '';
     repeat
     ProcessOK := (WaitForSingleObject(ProcessInformation.hProcess,8)<WAIT_OBJECT_0>0) then
        begin
        if (BytesRead>16384) then
           BytesRead := 16384;
        ProcessOK :=ReadFile(StdOutPipeRead,Buffer,BytesRead,BytesRead,NIL);
        end;
     if (BytesRead>0) then
        begin
        Buffer[BytesRead] := #0;
        Linha := (Linha+Buffer);
        while (Pos(#13#10,Linha)>0) do
           begin
           Lista.Items.Add(Trim(Copy(Linha,1,Pos(#13#10,Linha)-1)));
           Linha := Copy(Linha,Pos(#13#10,Linha)+2,5000);
           end;
        Lista.ItemIndex := (Lista.Items.Count-1);
        end;
     until (not ProcessOK); //{or (BytesRead=0)});
     Result := ((BackupRestore='Backup') and (Copy(Lista.Items.Strings[Lista.Items.Count-1],1,46)='comando: closing file, committing, and finishing.')) or
     ((BackupRestore='Restore') and (Copy(Lista.Items.Strings[Lista.Items.Count-1],1,40)='comando: finishing, closing, and going home'));
   finally
   CloseHandle(ProcessInformation.hThread);
   CloseHandle(ProcessInformation.hProcess);
   end;
   finally
   CloseHandle(StdOutPipeRead);
   end;
   lstLista.Items.Add(BackupRestore+' realizado com sucesso!');
   lstLista.ItemIndex := (lstLista.Items.Count-1);
end;



Lembrando que não fui eu quem desenvolvei o código, peguei da net e fiz minhas adaptações, com D7 funciona
_________________
Filho de Deus
em Cristo Jesus
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Keron
Experiente
Experiente


Registrado: Terça-Feira, 25 de Outubro de 2005
Mensagens: 463

MensagemEnviada: Sex Jan 07, 2011 1:36 pm    Assunto: Responder com Citação

Também faz parte do Código


Código:
procedure RunDosInMemo(DosApp:String;AMemo:TMemo) ;
const
ReadBuffer = 1048576;
var
Security : TSecurityAttributes;
ReadPipe,WritePipe : THandle;
start : TStartUpInfo;
ProcessInfo : TProcessInformation;
Buffer : Pchar;
BytesRead : DWord;
Apprunning : DWord;
begin
With Security do
   begin
   nlength := SizeOf(TSecurityAttributes) ;
   binherithandle := true;
   lpsecuritydescriptor := nil;
   end;
if Createpipe (ReadPipe, WritePipe,                  @Security, 0) then
   begin
   Buffer := AllocMem(ReadBuffer + 1) ;
   FillChar(Start,Sizeof(Start),#0) ;
   start.cb := SizeOf(start) ;
   start.hStdOutput := WritePipe;
   start.hStdInput := ReadPipe;
   start.dwFlags := STARTF_USESTDHANDLES +
                        STARTF_USESHOWWINDOW;
   start.wShowWindow := SW_HIDE;

   if CreateProcess(nil,           PChar(DosApp),           @Security,           @Security,
           true,           NORMAL_PRIORITY_CLASS,           nil,           nil,           start,           ProcessInfo)    then
     begin
     repeat
      Apprunning := WaitForSingleObject
                   (ProcessInfo.hProcess,100) ;
      Application.ProcessMessages;
     until (Apprunning <> WAIT_TIMEOUT) ;
      Repeat
        BytesRead := 0;
        ReadFile(ReadPipe,Buffer[0],ReadBuffer,BytesRead,nil) ;
        Buffer[BytesRead]:= #0;
        OemToAnsi(Buffer,Buffer) ;
        AMemo.Text := AMemo.text + String(Buffer) ;
      until (BytesRead < ReadBuffer) ;
   end;
   FreeMem(Buffer) ;
   CloseHandle(ProcessInfo.hProcess) ;
   CloseHandle(ProcessInfo.hThread) ;
   CloseHandle(ReadPipe) ;
   CloseHandle(WritePipe) ;
   end;
end;

_________________
Filho de Deus
em Cristo Jesus
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
faccruz
Colaborador
Colaborador


Registrado: Terça-Feira, 20 de Julho de 2010
Mensagens: 1563

MensagemEnviada: Sex Jan 07, 2011 1:57 pm    Assunto: Re: Restaurar FBK para Delphi Responder com Citação

AndreZc escreveu:
Olá,

eu gostaria de saber quais componentes eu uso para restaurar um arquivo FBK (Backup) ? Alguém tem uma boa referência ?

Tentei assim:

Citação:
F:\Arquivos de programas\Firebird\Firebird_2_5\bin>gbak -user SYSDBA -pas master
key -r -p 4096 -o f:\DADOS.fbk localhost:f:\DADOS.fdb
gbak: ERROR:Your user name and password are not defined. Ask your database admin
istrator to set up a Firebird login.
gbak:Exiting before completion due to errors

F:\Arquivos de programas\Firebird\Firebird_2_5\bin>gbak -user SYSDBA -pas master
key -r -p 4096 -o f:\DADOS.fbk localhost:f:\DADOS.fdb
gbak: ERROR:Your user name and password are not defined. Ask your database admin
istrator to set up a Firebird login.
gbak:Exiting before completion due to errors

F:\Arquivos de programas\Firebird\Firebird_2_5\bin>gbak -user SYSDBA -pas master
key -r -p 4096 -o f:\DADOS.fbk f:\DADOS.fdb
gbak: ERROR:Your user name and password are not defined. Ask your database admin
istrator to set up a Firebird login.
gbak:Exiting before completion due to errors


Mas como vocês podem ver, da erro.

Alguma sugestão ?

Muito obrigado.


Amigo, o a senha do banco tá separado? pois dá essa impressão.
_________________
Facc System - Sistemas para Computador
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
rafmattos
Colaborador
Colaborador


Registrado: Quinta-Feira, 11 de Fevereiro de 2010
Mensagens: 3416
Localização: Campo Grande/MS

MensagemEnviada: Sex Jan 07, 2011 2:44 pm    Assunto: Responder com Citação

gostei da rotina do Keron

muito boa!!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
AndreZc
Membro Junior
Membro Junior


Registrado: Quinta-Feira, 22 de Abril de 2010
Mensagens: 383
Localização: Rio de Janeiro

MensagemEnviada: Sex Jan 07, 2011 4:18 pm    Assunto: Responder com Citação

Opa! Consegui com o componente IBRestaureService. Muito obrigado a todos.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Keron
Experiente
Experiente


Registrado: Terça-Feira, 25 de Outubro de 2005
Mensagens: 463

MensagemEnviada: Sex Jan 07, 2011 7:29 pm    Assunto: Responder com Citação

Eu peguei ela na web, só fiz algumas alterações para deixar funcional.
_________________
Filho de Deus
em Cristo Jesus
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sex Jul 15, 2011 5:40 pm    Assunto: Responder com Citação

Keron escreveu:
Também faz parte do Código


Código:
procedure RunDosInMemo(DosApp:String;AMemo:TMemo) ;
const
ReadBuffer = 1048576;
var
Security : TSecurityAttributes;
ReadPipe,WritePipe : THandle;
start : TStartUpInfo;
ProcessInfo : TProcessInformation;
Buffer : Pchar;
BytesRead : DWord;
Apprunning : DWord;
begin
With Security do
   begin
   nlength := SizeOf(TSecurityAttributes) ;
   binherithandle := true;
   lpsecuritydescriptor := nil;
   end;
if Createpipe (ReadPipe, WritePipe,                  @Security, 0) then
   begin
   Buffer := AllocMem(ReadBuffer + 1) ;
   FillChar(Start,Sizeof(Start),#0) ;
   start.cb := SizeOf(start) ;
   start.hStdOutput := WritePipe;
   start.hStdInput := ReadPipe;
   start.dwFlags := STARTF_USESTDHANDLES +
                        STARTF_USESHOWWINDOW;
   start.wShowWindow := SW_HIDE;

   if CreateProcess(nil,           PChar(DosApp),           @Security,           @Security,
           true,           NORMAL_PRIORITY_CLASS,           nil,           nil,           start,           ProcessInfo)    then
     begin
     repeat
      Apprunning := WaitForSingleObject
                   (ProcessInfo.hProcess,100) ;
      Application.ProcessMessages;
     until (Apprunning <> WAIT_TIMEOUT) ;
      Repeat
        BytesRead := 0;
        ReadFile(ReadPipe,Buffer[0],ReadBuffer,BytesRead,nil) ;
        Buffer[BytesRead]:= #0;
        OemToAnsi(Buffer,Buffer) ;
        AMemo.Text := AMemo.text + String(Buffer) ;
      until (BytesRead < ReadBuffer) ;
   end;
   FreeMem(Buffer) ;
   CloseHandle(ProcessInfo.hProcess) ;
   CloseHandle(ProcessInfo.hThread) ;
   CloseHandle(ReadPipe) ;
   CloseHandle(WritePipe) ;
   end;
end;
amigo, este aqui pega o retorno do GFix? Pq estou tentando executar aqui e da erro.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Keron
Experiente
Experiente


Registrado: Terça-Feira, 25 de Outubro de 2005
Mensagens: 463

MensagemEnviada: Sex Jul 15, 2011 5:52 pm    Assunto: Responder com Citação

nunca testei com o GFIX. Apenas com o GBak
_________________
Filho de Deus
em Cristo Jesus
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados 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