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 21-09-2004
phrodo phrodo is offline
Miembro
 
Registrado: sep 2004
Posts: 17
Poder: 0
phrodo Va por buen camino
Controlar desconexiones en servidor

Hola:

Aviso que soy un poco novatillo, lo digo por si digo alguna chorrada me perdoneis, pero es que necesito ayuda.

Hace poco que he pasado de paradox a interbase por temas de corrupciones y la verdad, la diferencia es abismal. El problema q se me plantea ahora es que tengo unas 20 aplicaciones clientes compartiendo datos mediante un servidor de interbase y si se produce una caida del servidor, la mayoría de ocasiones me da un "EinterbaseError" en todas las aplicaciones clientes y tienen que reiniciar, y no se cual es la mejor forma de evitar el error, o mejor dicho, reconectar sin lanzar la excepción.

Yo lo que hago es que cada vez q hago un Query de actualización o consulta, compruebe si el fichero gdb alojado en el servidor se encuentra disponible mediante un if fileexists(....), pero eso no evita los errores.

¿Alguien me podria ayudar? estoy seguro que existen métodos mucho mejores, el objetivo es que si el servidor cae, las aplicaciones clientes simplemente no dejen realizar acciones en el servidor, pero no caigan.

Un saludo y gracias.
Responder Con Cita
  #2  
Antiguo 21-09-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
La solución es bastante sencilla, aunque no necesariamente económica. Que tu cliente (o vos) se compre un buen servidor, instalale un buen sistema operativo (linux, solaris, etc), conectale un UPS y listo.

Por otro lado, si aprecias en algo la seguridad, no pongas disponible el archivo gdb de manera que los clientes puedan verlo...

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 21-09-2004
phrodo phrodo is offline
Miembro
 
Registrado: sep 2004
Posts: 17
Poder: 0
phrodo Va por buen camino
gracias por tu respuesta, lo único que no tiene mi cliente es un servidor linux, que se lo he recomendado pero aun no he conseguido convencerle, tiene un windows 2000, y como comprenderás, la estabilidad no es su punto fuerte.

¿ninguna solucion software que evite las indeseadas excepciones?

He pensado en un servidor "espejo" que en caso de caida del principal recoja las peticiones de los clientes, pero no se como plantear ese tema.

Gracias, espero sus comentarios, un saludo.
Responder Con Cita
  #4  
Antiguo 21-09-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

Soy de la misma opinión que Juan Antonio. Un Servidor nunca debe caerse (ni tan solo tendria que hacerlo un Windows 2000 bien configurado). Por cierto es mucho más económico poner un SAI que otro Servidor para poner un Servidor espejo. (Independientemente que Interbase/Firebird no tienen la opción de poder saltar automaticamente a un Servidor espejo en caso de caída del principal).

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 02-11-2004
phrodo phrodo is offline
Miembro
 
Registrado: sep 2004
Posts: 17
Poder: 0
phrodo Va por buen camino
Hola a todos:

Vuelvo a retomar este hilo para comentar mis "avances" y ver si alguien puede darme un poquito de luz.

Me comentasteis como posibles causas que mi problema estaba en que debia darle mas seguridad al servidor. Instalé el SAI y las desconexiones se minimizan. Ahora se dan muy de vez en cuando, pero se dan. La causa de la mayoria de ellas es que instalan cosas en el servidor y reinician la máquina.... algunas veces desconexiones del cable de las tomas de red... etc.

Me diréis: los administradores de red deben cuidad que eso no pase, y por supuesto el software no es culpable de ésto, pero la administracion de la red no depende de mi y lo único que quiero es que el software sea lo mas "fiable" posible dentro del caos de red en el que me veo metido.

Por supuesto, para mis clientes, el software debe ser capaz de no colgarse cuando suceden estas desconexiones. Explicarles que deben darle más fiabilidad a la red para ellos es justificar lo injustificable. Ellos tienen una red que les funciona y entienden que mi software debe controlar cuando el servidor esta conectado y cuando no.

Bueno, pues tras varios intentos, ya logro que el software no se "cuelgue". Capturo la excepción EInterbaseError y el programa sigue su funcionamiento evitando que las aplicaciones clientes accedan a la base de datos de un servidor que no existe (momentaneamente). Mi cuestión es, como logro volver a conectar el componente "IBDatabase" cuando el servidor vuelve a arrancar. Lo he intentado con IBDataBase.connected, IBdatabase.forceclose, ibDatabase.Destroy y luego creando una nueva clase de tipo TIbdatabase, pero me salta la excepción sin remedio. El único modo es reiniciando el programa y inmediatamente la conexión se realiza, luego supongo que si que podria hacerse esa reconexión sin necesidad de reiniciar la aplicación, lo único es que no consigo dar con la forma.

¿Alguien podria arrojarme un poco de luz en este tema? ¿Es cuestion de la dll que maneja interbase en el cliente? Por favor, se que hay un grave problema en la red, pero si consigo que mis aplicaciones clientes controlen las desconexiones, mi software estará libre de cualquier "sospecha".

Un saludo y gracias.
Responder Con Cita
  #6  
Antiguo 02-11-2004
mercury2005 mercury2005 is offline
Registrado
 
Registrado: oct 2004
Posts: 5
Poder: 0
mercury2005 Va por buen camino
Hola encontre algo que te puede servir como solución, puedes mirar la pagina de http://www.devrace.com/ en ella encontraras los componentes FIBPlus y varios ejemplos entre ellos como tratar las conexiones perdidas http://www.devrace.com/files/example_connectionlost.zip
Espero que te pueda ayudar
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 17:42:36.


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