Club Delphi  
    Paypal   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-08-2004
Avatar de Rufus
Rufus Rufus is offline
Miembro
 
Registrado: may 2004
Ubicación: Canarias
Posts: 193
Poder: 23
Rufus Va por buen camino
Cita:
En aquellos que son windows, la carpeta donde están las bd está en una unidad compartida
Y...¿para que?. Para acceder y administrar la base de datos no hace falta, a no ser que tengas necesariamente que proporcionar acceso al archivo(s) de la base de datos.

Cita:
No se si me he explicado bien
Pues no lo se, pero da igual la historia que quieras montar. Empecemos por tu pregunta inicial:

-- ¿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
Responder Con Cita
  #2  
Antiguo 10-08-2004
burasu burasu is offline
Miembro
 
Registrado: may 2003
Ubicación: Cádiz - España
Posts: 183
Poder: 24
burasu Va por buen camino
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);
Por que obviamente la aplicación no puede rastrear las carpetas de una unidad que no está compartida. Por esto precisamente copio en cada equipo cliente la sentencia GFIX. Por ello intento buscar algún componente o linea de comando que pueda reemplazar esta operación que realizo.
Responder Con Cita
  #3  
Antiguo 10-08-2004
Avatar de Rufus
Rufus Rufus is offline
Miembro
 
Registrado: may 2004
Ubicación: Canarias
Posts: 193
Poder: 23
Rufus Va por buen camino
El comportamiento estándar de firebird 1.5 es el siguiente:

  • En windows: crea por defecto las bases de datos en modo SÍNCRONO, esto es que todas las operaciones se graban inmediatamente en disco.
  • En linux: crea por defecto las bases de datos en modo ASÍNCRONO, esto es que utiliza un buffer para ganar velocidad y las operaciones no son grabadas inmediatamente en el disco. Lo han hecho así porque según los desarrolladores que trabajan en firebird, los sistemas linux tienen la suficiente seguridad como para poder trabajar en este modo sin tener que preocuparse por la corrupcion de los datos. Yo también lo creo así.
Ahora bien, si tu para mayor seguridad y si no te fías mucho, quieres poner en los linux la escritura síncrona, puedes hacerlo, pero ya digo que yo no creo que sea necesario.

Cita:
Por que obviamente la aplicación no puede rastrear las carpetas de una unidad que no está compartida.
Bien, esta frase es cierta, pero es que para ejecutar correctamente el gfix no te hace falta que la base de datos esté en una carpeta compartida.

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
y ya está. No me hace falta saber en qué directorio está.

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
Ahora bien, ¿necesitas poner el gifx en todos los clientes para hacer esto? No. Lo que necesitas es la libreria cliente. El gfix (Y SOLO EL GFIX) podrías ponerlo en una carpeta compatida del servidor para que los clientes tengan acceso a este archivo.
__________________
Milo

Última edición por Rufus fecha: 10-08-2004 a las 12:52:21.
Responder Con Cita
  #4  
Antiguo 10-08-2004
burasu burasu is offline
Miembro
 
Registrado: may 2003
Ubicación: Cádiz - España
Posts: 183
Poder: 24
burasu Va por buen camino
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


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 )

Lo dicho gracias
Responder Con Cita
  #5  
Antiguo 10-08-2004
Avatar de Rufus
Rufus Rufus is offline
Miembro
 
Registrado: may 2004
Ubicación: Canarias
Posts: 193
Poder: 23
Rufus Va por buen camino
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);
para poner el modo síncrono, pero ya digo, esto hace falta si el servidor es un linux, en windows ya es síncrono por defecto.

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
__________________
Milo

Última edición por Rufus fecha: 10-08-2004 a las 13:39:56.
Responder Con Cita
  #6  
Antiguo 10-08-2004
burasu burasu is offline
Miembro
 
Registrado: may 2003
Ubicación: Cádiz - España
Posts: 183
Poder: 24
burasu Va por buen camino
Pues lo dicho gracias de nuevo.
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


La franja horaria es GMT +2. Ahora son las 11:39:28.


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