![]() |
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. |
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. |
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 ;) |
Cita:
Cita:
-- ¿Cómo puedo hacer lo que hace el gfix.exe pero sin tener el gfix.exe? :confused::confused::confused: 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 ?? |
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 ' + |
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 |
Gracias Rufus, siento haber sido tan tenstarudo y no haberte comprendido, pero es que se puede decir que estoy empezando en interbase y firebird, y aun más en aplicaciones clientes/servidor, y claro hay cosas que me dejan fuera de juego.
Cuando tenga algún otro problema con firebird ya se a quien debo de buscar :D :p Y ahora para terminar, yo recuerdo que existia un paquete de componentes para Delphi entre los cuales habia un componente que hacia el gbak. Conoces si hay alguno que haga el gfix?(así de esta forma ya no tendría que compartir nada de nada :rolleyes: ) Lo dicho gracias ;) |
Pues sí, y disculpa no habertelo dicho desde el principio, pero es que no lo utilizo, ya que uso poco el gfix y cuando tengo que hacerlo lo hago directamente con el gfix desde linea de comandos.
El componente es el IBConfigService, de la paleta Interbase Admin. Con él puedes hacer lo que hace el gfix. Haciendo doble click sobre él puedes configurar los parámetros de la conexión. Luego una vez esté activo puedes poner: Código:
IBConfigservice1.SetAsyncMode(false); Otros componentes como los FIBPlus, etc, también tienen componentes para esto. Te digo el de los IBX por que es gratis, pero ahora que lo pienso no se si viene con Delphi por defecto o con que version, porque creo que los mios los he actualizado de la pagina de borland. Ah, y de nada. Por aqui hay gente que sabe MUCHO más que yo, no te creas. Un saludo |
Pues lo dicho gracias de nuevo.
|
La franja horaria es GMT +2. Ahora son las 09:28:36. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi