FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Realizar el GFIX a una BD sin usar el fichero GFIX.EXE????
Hola amigos, estoy usando el Firebird 1.5, en mi aplicación cada vez que creo una nueva BD debo usar el fichero GFIX para poder asegurar la integridad de dicha base de datos.
Usar el fichero este significa tener que copiarselo a cada equipo en caso que la aplicación funciones en cliente/servidor. Quisiera saber como puedo realizar el GFIX sin tener que usar el fichero en cuestion. Gracias de antemano. |
#2
|
||||
|
||||
Cita:
Dicho esto, no necesitas utilizar el gfix recien creas una base de datos, generalmente, a no ser que quieras cambiar uno o más de los parámetros por defecto de la base de datos. (Casi) siempre se utiliza una vez que la base de tos lleve cierto tiempo funcionando. Justamente para lo que no te hace falta es para, como tu dices, asegurar la "integridad" de la base de datos: eso lo haces tu mismo con el diseño que hayas hecho de la base de datos. Cita:
Eso te haria falta precisamente si no utilizas cliente/servidor sino sistemas locales, es decir, que en cada equipo en el que instalas tu software creas una base de datos local e independiente de los otros equipos, en ese caso si que seria util ponerlo en todos, aunque si estan conectados en red tampoco es estrictamente necesario.
__________________
Milo |
#3
|
|||
|
|||
Si verás resulta que esa aplicación podrá ser utilizada tanto en cliente/servidor como en monopuesto.
Te pongo un ejemplo de mi aplicación (bueno de la aplicación que estamos haciendo en la empresa en la que trabajo) la aplicación podrá ser tanto cliente/servidor como monopuesto, a su vez las bases de datos podrán estar tanto en linux como en sistemas windows en servidores. En aquellos que son windows, la carpeta donde están las bd está en una unidad compartida. Dicho esto, el fichero gFIX en el servidor no está accesible para los usuario, entonces por eso paso el fichero junto con los demás ficheros de mi aplicación. Entonces por ello quiero una sentencia que me suplante el tener que hacer este caos. No se si me he explicado bien |
#4
|
||||
|
||||
Cita:
Cita:
-- ¿Cómo puedo hacer lo que hace el gfix.exe pero sin tener el gfix.exe? Eso es como si me dices: -- ¿Cómo puedo hacer lo que hace el winamp.exe pero sin tener el winamp.exe? Por otro lado, es que no le veo ningún problema a poner el gfix en todos los equipos donde pongas un servidor firebird. Si instalas firebird en local, estas instalando un servidor local en el equipo, si no no funciona ¿no?, entonces ¿que inconveniente hay en poner el gfix al mismo tiempo que haces la instalacion del servidor?. Una vez con el gfix ahí, puedes utilizarlo como quieras, puedes ejecutarlo como algo periodico o puede ser una opcion que incluyas en tu aplicacion. Aunque más a menudo que el gfix yo utilizaría el gbak y haría restauraciones periodicas de la base de datos. Por último, todavia no se muy bien para qué quieres utilizar el gfix nada más crear las bases de datos. Quizá para cambiar el modo a asíncrono en los windows ??
__________________
Milo |
#5
|
|||
|
|||
Precisamente para eso ultimo que has indicado, si no recuerdo mal (a no ser que en las nuevas versiones halla cambiado) la base de datos se crea en modo asincrónico o al reves, es decir no fuerza a grabar los datos en la BD. Por lo tanto eso es inestable por que se puede dañar la base de datos, no? Bueno pues por eso precisamente realizo el gFIX cuando creo la BD.
Al tenerla en el servidor alojada en una carpeta compartida, pero no así los drivers necesarios de Firebird no puedo hacer desde mi aplicación Delphi la siguiente sentencia: Código:
ComandoGFIX := 'gfix.exe -write sync -user ' + UPPERCASE(ModuloDatos.RegFichIni.UsrBD) + ' -password ' + Clave_Usuario + ' ' + ModuloDatos.SacarRuta + Nom_Fich + ModuloDatos.Ext_Global; WinExec(PChar(ComandoGFIX),SW_HIDE); |
#6
|
||||
|
||||
El comportamiento estándar de firebird 1.5 es el siguiente:
Cita:
Todavía no me aclaro mucho con tu caso concreto pero te voy a poner un ejemplo: Tienes dos computadores, uno es el servidor y otro el cliente, da igual que sean linux o windows. La base de datos está en el servidor, y no hay ningun directorio compartido. Bien, lo primero que yo hago, en este caso, es en el servidor poner en el archivo aliases.conf, que esta en el directorio de firebird, por ejempo la siguiente línea suponiendo que es un servidor windows: pedidos = c:\data\pedidos.fdb E insisto, el directorio 'data' no está compartido. Luego en el cliente tengo lógicamente que instalar el cliente de firebird, con la librería para poder conectar. Normalmente tambien se pone la vieja librería de interbase, que sólo sirve para enlazar con la nueva de firebird, para evitar problemas. Aquí, si quiero, puedo instalar en el cliente herramientas administrativas, como el gfix, gbak, isql y demás. Desde el cliente, suponiendo que el servidor se llame 'servidor', para conectar a la base datos solo tengo que poner Código:
servidor:pedidos Pues con el gfix lo mismo de lo mismo. Si quiero ejecutar un gfix desde el cliente contra una base de datos del servidor pondría: Código:
gfix -write sync -user sysdba -password masterkey servidor:pedidos
__________________
Milo Última edición por Rufus fecha: 10-08-2004 a las 12:52:21. |
|
|
|