Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Apagaron el servidor Firebird !!!! (https://www.clubdelphi.com/foros/showthread.php?t=43752)

sitrico 19-05-2007 01:49:19

Apagaron el servidor Firebird !!!!
 
Es una supocisión pero tengo días con la preocupación.

¿Que pasaría si mientras se ejecuta una aplicación cliente servidor algún usuario decide apagar justamente el equipo que sirve como servidor ó suspender el servicio del firebird? :mad:

Por partes: :cool:

Al cargar mi aplicación intento conectarme al servidor firebird (usando los MDO database.conected := true) capturo si ocurre una excepción y si es así permito reintentar o cancelar

algo así:

Código Delphi [-]
// escribo de memoria pero es más o menos la idea
Procedure datamodule.OnCreate...

Repeat
Try
   Database.conected := true;
Except
   r := MsgBox('Error de conexión...',MB_retryCancel)
   End;
Until (Dtabase.active) or (r = idCancel)
If r = idCancel Then
   application.terminate;

Funciona bien al iniciar el programa pero:

Y esta si es la pregunta:

como puedo verificar que el servidor este "en Linea" antes de ejecutar algunas sentencias SQL criticas.

Gracias

TJose 19-05-2007 03:35:03

Hola sitrico

Cita:

como puedo verificar que el servidor este "en Linea" antes de ejecutar algunas sentencias SQL criticas.
No te contesto la pregunta, pero no deberías preocuparte de la ejecución de sentencias SQL criticas, ni de cualquier otra, ya que nada pasará, ni bueno ni malo.
Lo importante a solucionar es que no te apaguen el servidor. Imagino, por lo que dices, que estas usando como servidor una máquina que es a su vez un puesto de trabajo.
Con Linux/Unix Windows XX Server esto no debería susceder, a menos que un usuario tenga los permisos suficientes, no podrá apagar el servidor, lo que no impide que le ponga el dedo a reset.

Saludos
TJose

sitrico 19-05-2007 04:57:33

Efectivamente el servidor será una estación de trabajo (ocasional) pero pensandolo más el único problema no es el apagado del servidor, tambien existen otras posibles causas para que un equipo deje de responder (tendrá Windows XP) y lo que pasó es que en las pruebas preliminares probé detener
el firebird a -ver que pasaba- .

En cuanto al arranque del sistema lo pude solucionar elegantemente, pero, ya en ejecución me gustaría manejar apropiadamente una situación como esta.

Supongo que requerirá usar try..except protegiendo las llamadas a "MDOQuery.ExecSQL" y en las transacciones.

de cualquier forma tienes razón:

Cita:

nada pasará, ni bueno ni malo
Pero me gusta "evitar" esas situaciones con un mensajito como:

Cita:

Error: el servidor está fuera de línea
y que se mantenga en ejecución la aplicación

TJose 19-05-2007 15:36:19

Hola

La verdad que no sé cual será la mejor solución, pero, para lo que planteas tendrás que controlar antes de cada instruccion el estado del servidor. No me parece lo más apropiado (es sólo mi opinión).

Saludos
Jose

PD: Con unos pocos pesos te compras una máquina que haga de servidor, con un SO apropiado. :D

AzidRain 19-05-2007 17:09:26

Basta con colocar entre un Try Except la instruccion Open o ExecSQL, si hay algun problema se generará la excepción. El unico inconveniente es que no siempre se puede identificar que sucedió ya que la excepcion se puede generar por un error en la sintaxis de sql o verdaderamente porque no hay conexión.

Yo lo hago de esa forma pongo todo lo que se debe ejecutar solo si hay servidor disponible dentro de un try except y si por la de malas no hay conexión el programa solo lo informa y no pasa nada. Hay posibilidad de reintentar

sitrico 20-05-2007 22:53:35

Gracias, el try..except será.

Aunque tambien encotré interesante esta opción: OnPostError

rastafarey 22-05-2007 19:20:56

Resp
 
Si lo que te preocupa es la integridad de la data entonces no te procupas mas solo has lo que queiras hacer de manera transacional que firebird hara el resto.


La franja horaria es GMT +2. Ahora son las 20:43:42.

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