Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-04-2023
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 264
Poder: 2
pgranados Va por buen camino
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?
Responder Con Cita
  #2  
Antiguo 10-04-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
database.fbk
¿No faltan las comillas?
Responder Con Cita
  #3  
Antiguo 10-04-2023
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 264
Poder: 2
pgranados Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
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
Responder Con Cita
  #4  
Antiguo 10-04-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
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.
Responder Con Cita
  #5  
Antiguo 10-04-2023
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 264
Poder: 2
pgranados Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
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.
Responder Con Cita
  #6  
Antiguo 10-04-2023
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
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
Responder Con Cita
  #7  
Antiguo 11-04-2023
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
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.
Responder Con Cita
  #8  
Antiguo 17-04-2023
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 264
Poder: 2
pgranados Va por buen camino
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;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
usando transacciones firebird + firedac no visibles en otra session ASAPLTDA Conexión con bases de datos 3 05-04-2018 08:51:00
Conectar remotamente usando FireDAC MAXIUM Firebird e Interbase 0 18-08-2014 20:36:29
backup y restore santi33a PostgreSQL 2 16-05-2012 20:25:28
restore en mysql douglas MySQL 3 28-01-2010 01:30:54
Backup y restore chipsoni SQL 2 08-05-2006 10:20:56


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


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