GARANTIR DESCONTO

Fórum Restore com Firebird embarcado #49924

19/03/2005

0

Colegas,

Deve ser uma bobagem, mas estou usando o firebird na forma embarcada. Está funcionando perfeitamente, porém eu tenho uma rotina de restore e backup onde eu utilizo TIBbackupservice e TIBrestoreservice. Se eu finalizo os processos fbserver.exe e fbguard.exe e rodo o meu programa, funciona todas as funções exceto esta. Aparece a mensagem ´Cannot attachj to services manager´.

Abaixo esta a rotina e o objeto :

object Restore: TIBRestoreService
Params.Strings = (
´user_name=sysdba´
´password=masterkey´)
LoginPrompt = False
TraceFlags = []
Verbose = True
PageBuffers = 0
Options = [Replace]
Left = 480
Top = 112
end

try
DM.Restore.DatabaseName.Clear;
DM.Restore.DatabaseName.add(dir + ´BASEST.FDB´);
DM.Restore.BackupFile.Clear;
DM.Restore.BackupFile.Add(texto);
DM.Restore.Active := true;
Memo1.Lines.Clear;
Memo1.Lines.Add(´Restore Iniciado às ´ + FormatDateTime(´hh:nn:ss´, now) + ´ horas´);
DM.Restore.ServiceStart;
While not DM.Restore.Eof do
Memo1.Lines.Add(DM.Restore.GetNextLine);
DM.Restore.Active := false;
Memo1.Lines.Add(´Restore Finalizado às ´ + FormatDateTime(´hh:nn:ss´, now) + ´ horas´);
except
on E:Exception do
begin
Application.MessageBox(Pchar(´Erro1.´+#13+
´Contate o administrador do sistema.´+13+
´Erro:´+13+e.Message),
´Erro´, MB_ICONERROR + MB_OK);
passou := false;
end;
end;

Detalhe, esta rotina funciona se o fbserver.exe estiver executando. Como faço para fazer esta rotina funcionar na forma embarcada?

Grato pela atenção dispensada.


Rookie

Rookie

Responder

Posts

19/03/2005

Afarias

|Como faço para fazer esta rotina funcionar na forma embarcada?

não faz!

Só tem sentido backup on-line em sistemas multi-usuário. Para fazer um backup com o FB embedded basta desconectar o Database e fazer a cópia do arquivo.



T+


Responder

Gostei + 0

19/03/2005

Rookie

Afaria,

Obrigado por me responder, porém acha que não fui claro na minha exposição. O meu programa trabalha, vamos dizer assim, uma massa de dados por vez. A necessidade de tirar backup e restore é para o caso do usuário retornar a uma massa de dados que ele já trabalhou, por isso eu coloquei essas funções no programa. É uma função para o usuário e não para o administrador do sistema. Não é uma aplicação que roda em rede, é stand-alone. Porém por exigência superior é necessário que ele rode na forma embarcada e não está funiconando pelo motivo já exposto.

Espero ter sido mais claro e se vc puder me ajudar antecipadamente lhe agradeço.

Um abraço,

rookie


Responder

Gostei + 0

19/03/2005

Afarias

Acho q eu q não fui claro, desculpe.

A versão Embedde do FB não suporta Services API -- ou seja -- vc não pode usar IBBackupService ou IBRestoreService com o FB Embedded.

Como disse antes, para fazer um backup dos dados apenas crie uma função q copie o arquivo GDB


T+


Responder

Gostei + 0

20/03/2005

Rookie

Obrigado, agora eu entendi o que você quis dizer. Valeu!


Responder

Gostei + 0

20/03/2005

Rookie

A. Farias,

Ainda dentro do assunto Firebird Embarcado, tem como saber se na máquina que estiver rodando o programa, o modo que se encontra o firebird, se é embarcado ou não? Pergunto isso pq se não for na forma embarcada eu deixo a rotina como está hoje, pois funciona, se não faço uma outra copiando e restaurando na mão.
Estive pensando nessa solução abaixo, porém se tiver uma mais segura e melhor bolada, eu te agradeço.

var
nHandle: HWnd;
begin
nHandle := FindWindow(´fb_server´,´Firebird Server´);
if nHandle <> 0 then
............ (Firebird não embarcado)
else
............ (Firebird embarcado);


Responder

Gostei + 0

22/03/2005

Afarias

realmente existem algumas formas, essa q vc citou parece estar OK.

usar a api de serviços do Windows é outra forma, usar o comando NET (net start |find ´Firebird´) é outra, checar diretamente a gds32.dll é outra (informações de versão ou tamanho), etc...



T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar