PDA

Ver la Versión Completa : BackUp por código


LBriceno
08-05-2003, 05:53:03
Hola a todos:

Tengo algunas dudas sobre hacer respaldo de una BD, a ver si me pueden hechar una manito....:)

Tengo una aplicación en Delphi5, me conecto a una BD de IB6 mediante ADO. Como estoy migrando la BD desde MSSQL7 a IB6, he tenido que cambiar algunas clausulas de SQL para adaptarlas.
Esta app. tiene la opción de hacer un respaldo de la BD, en MSSQL solo tenia que ejecutar un ADOCommand con una clausula del tipo "BACKUP DATABASE basedatos1 TO DISK drive:\dir1\respaldo.bak".
En IB6 existe el comando "gbak", estuve instruyéndome un poco en su uso, pero me quedan unas pequeñas dudas:
1.¿Se debe ejecutar en un comando tipo WinExec() o algo asi?
2.¿Para ejecutarlo desde un equipo cliente, es necesario cargar el IB Client o basta con grabar gbak.exe?
3.A este respecto, tengo entendido que con ADO no es necesario tener que instalar IBClient en cada estación de trabajo.
4.¿O Existe otro método para hacer un respaldo mediante código?(a través de la API de IB o algo asi)

Son dudas bien básicas, espero que alguien pueda darme un empujoncito....:D

Gracias de antemano
Luis Briceño

kinobi
08-05-2003, 08:00:30
Hola,

Posteado originalmente por LBriceno
En IB6 existe el comando "gbak", estuve instruyéndome un poco en su uso, pero me quedan unas pequeñas dudas:
1.¿Se debe ejecutar en un comando tipo WinExec() o algo asi?
Es una manera de hacerlo.

Posteado originalmente por LBriceno
2.¿Para ejecutarlo desde un equipo cliente, es necesario cargar el IB Client o basta con grabar gbak.exe?
Es necesario tener acceso a la biblioteca que implementa el API InterBase (biblioteca gds32.dll para el caso de Windows). Toda comunicación con el servidor InterBase debe pasar por (las funciones) de esta biblioteca.

Posteado originalmente por LBriceno
3.A este respecto, tengo entendido que con ADO no es necesario tener que instalar IBClient en cada estación de trabajo.
Si se quiere hacer un backup, me refiero a un backup InterBase, es necesario.

Posteado originalmente por LBriceno
4.¿O Existe otro método para hacer un respaldo mediante código?(a través de la API de IB o algo asi)
Sí, existen funciones dentro del API (un grupo denominado API de servicios) que permiten hacer backups/restores.

Más información: documentación de InterBase 6, volumen "API Guide", capítulo "12, Working with services", función "isc_service_start" (página 204 y ss).

También existen bibliotecas de componentes (p. ej. IBX) que tienen componentes que encapsulan estas funciones (componentes TIBBackupService y TIBRestoreService).

Más información: documentación de InterBase 6, volumen "Developer's Guide", capítulo "19, Working with InterBase services", apartado "Backing up and restoring databases" (página 277 y ss).

Saludos.

pedrohdez
08-05-2003, 09:57:22
Hola briceno,

Una acotacion al margen, veo mucho mas interesante usar GBAK en un fichero .BAT (o un script de linux) y usar el programador de tareas para hacer las copias de seguridad, asi te ahorras que el usuario se olvide, o que el responsable de las mismas este de vacaciones y nadie haga las copias.

Normalmente recomiendo a mis usuarios que programen una copia por dia, con diferente nombre (CopiaLunes, CopiaMartes ...) y que periodicamente copien esos ficheros a sistemas externos, CDs, Cintas, discos externos ...

LBriceno
08-05-2003, 18:48:04
Gracias, su ayuda me ha sido de gran utilidad
:cool:

duda1: ¿esos componentes IBX no vienen con Delphi 5 Enterprise, donde los puedo encontrar? Solo viene un tab de Interbase, pero en el Developer's Guide habla de un tab Interbase Admin???'?

duda2:A un fichero .bat ¿Como puedo darle la fecha como un parámetro?, la verdad es que no he trabajado con este tipo de ficheros.

Gracias.....

pedrohdez
09-05-2003, 10:31:54
duda2:A un fichero .bat ¿Como puedo darle la fecha como un parámetro?, la verdad es que no he trabajado con este tipo de ficheros.
Los ficheros BAT son muy limitados, puedes usar parametros en la llamada y refrenciarlos en el archivo .bat por su numero %1 %2 ...

kinobi
09-05-2003, 12:08:58
Hola,

Posteado originalmente por LBriceno
duda1: ¿esos componentes IBX no vienen con Delphi 5 Enterprise, donde los puedo encontrar? Solo viene un tab de Interbase, pero en el Developer's Guide habla de un tab Interbase Admin???'?

La versión de IBX que traía Delphi 5 no incorpora soporta para el API de servicios, ya que en la época en la que salió Delphi 5 todavía no había salido la versión 6 de InterBase, que es la que introduce el API de servicios.

Tendrás que actualizar tu versión de IBX. Puedes hacerlo en la página de descargas del coordinador de IBX, Jeff Overcash, en Borland ...

http://codecentral.borland.com/codecentral/ccweb.exe/author?authorid=102

Presta atención a que la versión que te bajas coincide con tu versión de Delphi.

Saludos.

LBriceno
09-05-2003, 16:21:19
Ok, Muchas gracias a ambos...:D