Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Restore a una DB usando FireDAC (https://www.clubdelphi.com/foros/showthread.php?t=96194)

pgranados 10-04-2023 19:43:00

Restore a una DB usando FireDAC
 
Buen día compañeros, actualmente en mi aplicación para realizar un backup o un restore utilizaba el gbak y lo llamaba con shellexecute, pero quisiera hacerlo con los componentes de fireDAC para hacerlo "mas limpio" hablando de interfaz.

Pero me estoy topando con que no puedo hacer el restore. El código que estoy utilizando es:

Código Delphi [-]
try
          DataModule.FDRestore.BackupFiles.Clear;
          DataModule.FDRestore.BackupFiles.Add(database.fbk);
          DataModule.FDRestore.Database:= 'database.fdb';
          DataModule.FDRestore.UserName:= 'SYSDBA';
          DataModule.FDRestore.Password:= 'masterkey';
          DataModule.FDRestore.Restore;
except
          on e:exception do
          showMessage(e.Message);
end;

Pero caigo en el except y el mensaje es: [FireDAC][Phys][FB]Error (2) creating database file: 'database.fdb' via copying from: 'database.fbk'

¿Alguien sabe donde puede estar el problema?

Casimiro Noteví 10-04-2023 21:02:30

database.fbk
¿No faltan las comillas?

pgranados 10-04-2023 21:04:00

Cita:

Empezado por Casimiro Notevi (Mensaje 551078)
database.fbk
¿No faltan las comillas?

No es eso, en mi codigo si tengo la ruta completa entre comillas simples ' '
lo cambie por database.fbk para no escribir toda la ruta de la ubicación del .fbk

Casimiro Noteví 10-04-2023 21:11:55

Se supone que la BD que vas a restaurar tiene un nombre distinto a la que existe. Y si es la que existe, y la vas a sobreescribir, entonces estará cerrada sin conexiones a la misma.

pgranados 10-04-2023 21:24:53

Cita:

Empezado por Casimiro Notevi (Mensaje 551080)
Se supone que la BD que vas a restaurar tiene un nombre distinto a la que existe. Y si es la que existe, y la vas a sobreescribir, entonces estará cerrada sin conexiones a la misma.

Lo que hago es cerrar todas las conexiones a esa base de datos y despues quiero hacer el restore, pero salta el error:
[FireDAC][Phys][FB]Error (2) creating database file: 'database.fdb' via copying from: 'database.fbk'

Aunque si lo hago utilizando gbak no tengo ningún error, si se realiza el restore.

Ya intente también eliminar el archivo .FDB de la ruta para que con el FBK se cree pero obtengo el mismo error.

cloayza 10-04-2023 23:12:43

Solo puedo sugerir desplegar la información a traves de Verbose y ver que reporta GBAK...

Código Delphi [-]
FDRestore.Verbose:=True;

procedure TForm1.FDRestoreProgress(ASender: TFDPhysDriverService; const AMessage: string);
begin
       Memo1.Lines.Add(AMessage);
end;

Ojala que la información que obtengas te permita orientar...
Saludos cordiales

duilioisola 11-04-2023 15:18:42

También puede ser que esté utilizando el "servicio" de backup de firebird. Este solo puede hacer backup y restore en ficheros locales al servidor.
Prueba dándole solo el nombre del fbk, sin ruta. Si lo deja en el servidor y luego hace el restore correctamente, seguramente ese es el problema.

pgranados 17-04-2023 20:04:46

Una disculpa, no actualice el estatus, pude solucionarlo.

Se debe de borrar el archivo .FDB y luego utilizar el componente:TFDFBNRestore

Y llenamos los datos:

Código Delphi [-]
FDRestore.BackupFiles.Clear;
FDRestore.BackupFiles.Add('C:\PROGRAMA\RESPALDOS\DATABASE.FBK');
FDRestore.Database:= 'C:\PROGRAMA\DATABASE.FDB';
FDRestore.Restore;


La franja horaria es GMT +2. Ahora son las 22:58:22.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi