![]() |
¿Como detectar si el servidor de bases de datos está lanzado?
Hola buenas,
Les cuento mi problema: resulta que tengo una aplicación desarrollada con Delphi6 y que necesita conectarse al arrancar con una base de datos. El servidor de base de datos es el firebird 1.5.2.4731. La susodicha aplicación se lanza al inicio de windows y hay veces (no muchas, la verdad), que al arrancar el PC me da un mensaje de error del estilo : "unavailable database". Sospecho que es porque el programa se lanza antes de que el servicio de Firebird esté lanzado, así que me gustaría saber cómo se puede detectar si el servicio está o no lanzado para que mi programa espere por él. He usado la opción buscar pero la verdad es que no he encontrado nada que me solucione la vida, así que si algún alma caritativa se apiada de mí y me ayuda le estaré eternamente agradecido :D:D:D |
Supongo que ese error te da al intentar activar la conexión con la Base de Datos (al abrir tablas o ejecutar consultas); Puedes probar a activar la conexión al principio y capturar (try..except) los errores que te de.
En ese punto deberías poder hacer varios reintentos con un breve lapso de tiempo entre medio, para "esperar" a que el servidor se arranque. Otra cosa que puedes hacer es, al principio preguntar si el Servicio del servidor de FireBird está activo, sino es así esperar y volver a preguntar (repetir esto unas cuantas veces) antes de generar el error. |
Yo sugiero que tu aplicación la generes como un servicio y le asignes en la propiedad Dependencies el servicio de Firebird, con eso tu programa no va a iniciar hasta que el servicio Firebird este iniciado.
Saludos. |
Solo añadir un poco de codigo:
La primera función nos dice si un servicio esta iniciado, y la segunda espera hasta que el servicio se inicia o se cumple el tiempo de espera. Si el servicio no esta iniciado cuando se cumple el tiempo de espera la función devuelve FALSE. Un ejemplo de como usar lo anterior:
|
¡¡Qué grande Seoane!!!
Uno pide... :confused: :confused: Cita:
Cita:
|
seoane, y en los ratos libres, ¿qué haces? :)
Muy bueno ese código. |
Cita:
Cita:
|
Cita:
Me incluyo, también, porque más de una vez me habéis ayudado y al final, la beneficiada ha sido la empresa donde trabajo. |
Hola,
Cita:
Cita:
|
Cita:
Si te tienen aquí en el Club donde les solucionas sus problemas y sin pagarte un duro :mad: Además tanto tiempo aquí no puede ser bueno, ya ves que cada vez que hay algún problema con el servidor, hay pánico y aburrimiento entre los foristas. Pero sin llegar al suicidio colectivo eh? :rolleyes: Y tampoco estudiarás mucho tanto tiempo aquí. Bueno, todo esto es broma, no se lo tomen a mal. Le pediria a Seoane para que plaza está estudiando sólo por curiosidad eh?, no me voy a presentar tranquilo ;) A coruña me pilla en la otra punta de España. De todos modos suerte Saludos. |
Cita:
|
Joder, sois unas fieras :cool::cool:
Muchas gracias por la atención, en especial a Seoane por ese código que tan buena pinta tiene. Lo probaré en cuanto llegue a casa, que aunque en este caso no le ahorrais dinero a una empresa, ya me habeis zafado de alguna en el curro:D:D. Nunca me cansare de alabar lo bueno que es el foro. Seguid así. |
Alguien sabe...
como se llama el nombre del servicio que tiene Firebird?
He intentado con "fbserver" y "fbguard" pero no lo encuentra con ninguno de los dos nombres. En el administrador de tareas estan esos dos. Saludos |
FirebirdGuardianDefaultInstance
FirebirdServerDefaultInstance |
Se puede hacer con Mutex?
Tengo una validación para que no se ejecuten dos instancias de mi aplicación y funciona correctamente. Pero al validar lo mismo pero con el guardian Firebird no lo valida e intenta correrlo de nuevo, lo que genera un mensaje de error.
Mi código es el siguiente:
Al parecer no encuentra el programa con el nombre 'fbguard', tambien intente con 'fbserver', FirebirdGuardianDefaultInstance, FirebirdServerDefaultInstance y no funciona. Alguien conoce el nombre con el que se identifica el programa de guardian de Firebird? Saludos |
:eek: :confused: ¿Quien se supone que crea el mutex?
|
Definitivamente eres un "escapao" Seoane... peazo e' codigos te avientas...
Vaya que ni la identación te puede uno criticar :D |
La franja horaria es GMT +2. Ahora son las 20:41:04. |
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