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 28-09-2022
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 264
Poder: 2
pgranados Va por buen camino
Button Backup y Restore Firebird

Buen día compañeros, tengo la siguiente consulta.

Necesito crear en mi formulario un botón llamado "Generar Respaldo" y "Regresar Respaldo" y que hagan dicha función con mi base de datos (En este caso: TEST.FDB), mi base de datos está hecha en Firebird 3.0

¿Alguien sabe cómo lo puedo implementar en Delphi?

He leído varios foros, incluso artículos de este mismo pero cada uno el código que utilizan es muy diferente.

Saludos y muchas gracias por su apoyo.
Responder Con Cita
  #2  
Antiguo 28-09-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Puedes realizar el BACKUP y el RESTORE utilizando la utilidad que trae FB y llamándola desde la línea de commandos.
La utilidad es GBAK.

El commando de backup será algo similar a eso:
Cita:
GBAK -backup -user NombreUsuario -password Contraseña \\SERVIDOR-PC\C:\CARPETA\MiBaseDatos.FDB C:\CARPETA\MiBackup.FBK
Y el commando de RESTORE algo parecido a esto:
Cita:
GBAK -c -v -user NombreUsuario -password Contraseña D:\CARPETA\CONTA.FBK D:\CARPETA\CONTA2.FDB
Para llamar a esos commandos desde un programa delphi puedes usar ShellExecute (si buscas ejempos de cómo utilizarlo encontrarás muchos).

Revisa los link que hay al final de esta página o estos otros, aunque si buscas en los foros encontrarás más:
https://www.clubdelphi.com/foros/showthread.php?t=57566
http://www.clubdelphi.com/foros/showthread.php?t=79416
https://www.clubdelphi.com/foros/showthread.php?t=28506
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 28-09-2022
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 Neftali [Germán.Estévez] Ver Mensaje
Puedes realizar el BACKUP y el RESTORE utilizando la utilidad que trae FB y llamándola desde la línea de commandos.
La utilidad es GBAK.

El commando de backup será algo similar a eso:


Y el commando de RESTORE algo parecido a esto:


Para llamar a esos commandos desde un programa delphi puedes usar ShellExecute (si buscas ejempos de cómo utilizarlo encontrarás muchos).

Revisa los link que hay al final de esta página o estos otros, aunque si buscas en los foros encontrarás más:
https://www.clubdelphi.com/foros/showthread.php?t=57566
http://www.clubdelphi.com/foros/showthread.php?t=79416
https://www.clubdelphi.com/foros/showthread.php?t=28506

Gracias por el aporte, solamente me queda una duda, ¿la función gbak se ejecuta en ISQL? Lo ejecuto de la siguiente maneja y arroja error

Código:
SQL> gbak -v -t -user SYSDBA -password "masterkey" C:\Users\Paul\Desktop\PROYECTO\TEST.FDB C:\Users\Paul\Desktop\PROYECTO\TEST.FBK;

Statement failed, SQLSTATE = 42000
Dynamic SQL Error
-SQL error code = -104
-Token unknown - line 1, column 1
Saludos
Responder Con Cita
  #4  
Antiguo 28-09-2022
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
GBAK es un programa Win32 o Win64, dependiendeo de la instalación que hayas hecho.
Suele estar en C:\Program Files\Firebird\Firebird_2_5\bin (Version Firebird 2.5 Win32).
Para Firebird 3.0 supongo que será C:\Program Files\Firebird\Firebird_3_0\bin
Para Firebird 4.0 es C:\Program Files\Firebird\Firebird_4_0\

Por lo tanto la sentencia completa sería
Código:
C:>"C:\Program Files\Firebird\Firebird_2_5\bin\gbak.exe" -v -t -user SYSDBA -password masterkey "C:\Users\Paul\Desktop\PROYECTO\TEST.FDB" "C:\Users\Paul\Desktop\PROYECTO\TEST.FBK"
Responder Con Cita
  #5  
Antiguo 28-09-2022
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 duilioisola Ver Mensaje
GBAK es un programa Win32 o Win64, dependiendeo de la instalación que hayas hecho.
Suele estar en C:\Program Files\Firebird\Firebird_2_5\bin (Version Firebird 2.5 Win32).
Para Firebird 3.0 supongo que será C:\Program Files\Firebird\Firebird_3_0\bin
Para Firebird 4.0 es C:\Program Files\Firebird\Firebird_4_0\

Por lo tanto la sentencia completa sería
Código:
C:>"C:\Program Files\Firebird\Firebird_2_5\bin\gbak.exe" -v -t -user SYSDBA -password masterkey "C:\Users\Paul\Desktop\PROYECTO\TEST.FDB" "C:\Users\Paul\Desktop\PROYECTO\TEST.FBK"
Gracias amigo, ya pude realizar el backup de mi base de datos y también ya pude convertir el FBK en FDB. Ahora con este paso avanzado espero implementarlo en mi programa. ¿Hay algún post donde alguien lo haya implementado? Saludos !
Responder Con Cita
  #6  
Antiguo 28-09-2022
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Cita:
Empezado por pgranados Ver Mensaje
Gracias amigo, ya pude realizar el backup de mi base de datos y también ya pude convertir el FBK en FDB. Ahora con este paso avanzado espero implementarlo en mi programa. ¿Hay algún post donde alguien lo haya implementado? Saludos !
Revisa si te sirve este enlace: Usar el Gbak desde mi aplicacion

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 29-09-2022
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
Yo lo que agregaría a todo esto es la verificación de que todo haya salido bien.
  1. Borras el fichero resultado_backup.log si existe.
  2. Haces backup con la opción "-y resultado_backup.log" y SIN la opcion "-v"
  3. Verificas que el fichero resultado.log está vacío. Esto quiere decir que ha terminado con exito. De lo contrario muestras lo que contenga, que es el mensaje de error.
  4. Borras el fichero resultado_restore.log si existe.
  5. Haces restore con la opción "-y resultado_restore.log" y SIN la opcion "-v"
  6. Verificas que el fichero resultado.log está vacío. Esto quiere decir que ha terminado con exito. De lo contrario muestras lo que contenga, que es el mensaje de error.

Notas:
1.
Es importante borrar el fichero .log ya que el comando fallará si ya existe.
Para evitar posibles errores suelo nombrar el fichero como "resultado_backup_[FECHA_HORA_SIN_SEPARADORES].log" (resultado_backup_20220929_090332.log)

2.
Si utilizas la opción "-y", debes verificar que termine que una línea que pone "gbak:finishing, closing, and going home". De lo contrario hubo error.

3.
Ten en cuenta que el hacer un backup no garantiza que puedas hacer un restore.
Por esto, siempre hago los dos pasos y verifico que no haya errores.

Última edición por duilioisola fecha: 29-09-2022 a las 09:08:34.
Responder Con Cita
  #8  
Antiguo 29-09-2022
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
Otro punto a tener en cuenta durante el restore es no sobreescribir la base de datos original.
El problema es que si falla el restore y estamos sobreescribiendo la base de datos perderemos todo.

Por esto suelo seguir estos pasos:
  1. Restore a una base nombrada "base_de_datos.RES".
  2. Verifico que el restore termine si errores (restore.log vacío).
  3. Si es correcta, desconecto de la base de datos.
  4. Renombro la base de datos a "base_de_datos_[FECHA_HORA].BAK"
  5. Renombro restore a "base_de_datos.FDB"
  6. Reconecto a la base de datos.
Responder Con Cita
  #9  
Antiguo 29-09-2022
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 duilioisola Ver Mensaje
Otro punto a tener en cuenta durante el restore es no sobreescribir la base de datos original.
El problema es que si falla el restore y estamos sobreescribiendo la base de datos perderemos todo.

Por esto suelo seguir estos pasos:
  1. Restore a una base nombrada "base_de_datos.RES".
  2. Verifico que el restore termine si errores (restore.log vacío).
  3. Si es correcta, desconecto de la base de datos.
  4. Renombro la base de datos a "base_de_datos_[FECHA_HORA].BAK"
  5. Renombro restore a "base_de_datos.FDB"
  6. Reconecto a la base de datos.

Gracias por las sugerencias, se aprecian bastante, llevo unas pocas semanas trabajando con Delphi y Firebird y aún estoy practicando.

¿Cuál es la forma correcta de desconectar mi aplicativo de la base de datos para poder hacer un backup y restore?
Responder Con Cita
  #10  
Antiguo 29-09-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por pgranados Ver Mensaje
Gracias por las sugerencias, se aprecian bastante, llevo unas pocas semanas trabajando con Delphi y Firebird y aún estoy practicando.

¿Cuál es la forma correcta de desconectar mi aplicativo de la base de datos para poder hacer un backup y restore?
Depende de los componentes que estés usando, pero más o menos:
Código Delphi [-]
ibdatabase.close;
ibdatabase.active:=false;
Responder Con Cita
  #11  
Antiguo 29-09-2022
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
Depende de los componentes que estés usando, pero más o menos:
Código Delphi [-]
ibdatabase.close;
ibdatabase.active:=false;
Que tal, el código que estoy usando para generar el respaldo es:

Código Delphi [-]

procedure TForm4.Button1Click(Sender: TObject);
var psFichero,psinstruccion:string;
begin
  psFichero:='C:\Program Files (x86)\Firebird\Firebird_3_0\gbak.exe';
  psInstruccion:='-v -t -user SYSDBA -password masterkey  "C:\Test.FDB" "C:\Test.FBK"';
  ShellExecute(Handle, nil, PChar(psFichero), PChar(psInstruccion), nil, SW_HIDE);

Última edición por pgranados fecha: 29-09-2022 a las 17:22:59.
Responder Con Cita
  #12  
Antiguo 29-09-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No hace falta desconectar la BD para hacer un backup.
Responder Con Cita
  #13  
Antiguo 29-09-2022
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
Depende de los componentes que estés usando, pero más o menos:
Código Delphi [-]
ibdatabase.close;
ibdatabase.active:=false;
Hola Casimiro, estoy revisando esta parte pero no encuentro una forma de crear un botón llamado Desconectar y utilizar las funciones que me comentas, ¿tendrás algún ejemplo de cómo llevarlo a cabo? Estoy usando FB 3.0. Saludos.
Responder Con Cita
  #14  
Antiguo 30-09-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por pgranados Ver Mensaje
Hola Casimiro, estoy revisando esta parte pero no encuentro una forma de crear un botón llamado Desconectar y utilizar las funciones que me comentas, ¿tendrás algún ejemplo de cómo llevarlo a cabo? Estoy usando FB 3.0. Saludos.
No hace falta desconectar la BD para hacer un backup.
Responder Con Cita
  #15  
Antiguo 30-09-2022
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
No hace falta desconectar la BD para hacer un backup.
No hablo de un backup, hablo de un restore.
Responder Con Cita
  #16  
Antiguo 30-09-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Has contestado ya qué componentes estás usando? es que no lo veo.
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
IB Backup/Restore Schedule RolphyReyes Firebird e Interbase 7 05-02-2017 13:01:49
Backup y Restore de Firebird daragor Lazarus, FreePascal, Kylix, etc. 2 13-05-2013 17:47:04
backup y restore santi33a PostgreSQL 2 16-05-2012 20:25:28
Backup/Restore HectorMendez SQL 1 18-09-2007 09:25:09
Backup y restore chipsoni SQL 2 08-05-2006 10:20:56


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


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