PDA

Ver la Versión Completa : Ejecutar FireBird Multipes Instancias!!!


Blasito
12-02-2007, 17:48:27
Cordial Saludo,

He desarrollado un aplicacion en Delphi 2005 con bases de datos de FireBird 1.5, la aplicacion funciona perfectamente en Windows Server 2003 y he creado 2 usuarios que ejecutaran simultaneamente la aplicacion y he instalo Terminal Server para que lo puedan hacer, asi que mi aplicacion sera ejecutada simultaneamente y el FireBird que es mi motor de bases de datos tambien deberia ser cargado simultaneamente.

Cuando el 1er. usuario entra y ejecuta mi aplicacion funciona perfectamente se carga sin errores el FireBird, pero cuando entra el 2do. usuario entra y ejecuta mi aplicacion revienta un error del FireBird diciendo que no puede ser ejecutado en multiples instancias y desde luego mi aplicacion no funciona. :(

He realizado pruebas y para que el 2do usuario pueda ejecutar mi aplicacion, el 1er. usuario debe salir de mi aplicacion y matar el proceso FBServer.exe y FBGuard.exe (para liberar el FireBird) y asi es la unica forma que el 2do, usuario puede entrar pero entonces ya el 1er. usuario quedo muerto.

He cambido la instalacion del FireBird diciendole que lo carge como Servicio de Windows ó como Aplicacion y sale el mismo error de las multiples instancias, tambien he instalado la nueva version del FireBird 2.0 y lo mismo sale el mismo error.

Asi que necesito saber como puedo quitar este error y hacer que 2 usuarios simultaneamente dentro del mismo Servidor puedan ejecutar mi aplicacion si que este error aparezca.?

Gracias a todos por su pronta respuesta.

Ing. Bladimir Silva T
Adm. Windows Server 2003
Cartago - Valle
Colombia

Caral
12-02-2007, 17:53:03
Hola Blasito
A mi me parece un problema del servidor y no de la base de datos, me extraña que FireBird no se pueda accesar por vrios usuarios a la vez.
Intenta ver las caracteristicas de los usuarios en el servidor y los permisos.
Me puedo equivocar, pero si access, que es muy basica lo puede hacer, como no lo va a hacer FireBird.
S

Blasito
12-02-2007, 18:03:24
Hola Blasito
A mi me parece un problema del servidor y no de la base de datos, me extraña que FireBird no se pueda accesar por vrios usuarios a la vez.
Intenta ver las caracteristicas de los usuarios en el servidor y los permisos.
Me puedo equivocar, pero si access, que es muy basica lo puede hacer, como no lo va a hacer FireBird.
S
Los 2 usuarios estan como Administradores asi que permisos no debe ser, claro las bases de datos de Firebird soporta multiples usuarios de eso no hay duda y cuando mi aplicacion es accedida desde 2 computadore con XP corre bien y sin problemas.

Pero aqui el caso es que el FireBird no puede ser cargado 2 veces en el mismo computador o sea en 2 instancias parace ser que solo soporta 1 sola instancia.

Blasito.

Caral
12-02-2007, 18:09:08
Hola
Ya en ese tema desconozco, tendria que verificar si sucede lo mismo con otras base de datos como mysql, lo que si se es que en access no hay ese problema e insisto no deberia suceder en FireBird, colocar varias bases de datos en un mismo ordenador, no se para que sinceramente.
Saludos

dec
12-02-2007, 18:11:02
Hola,

Yo no es que sepa mucho del tema, pero, el problema no debe ser que Firebird no sea capaz de ejecutar dos instancias, sino que con una instancia debería ser suficiente. De ahí el problema si tratan de ejecutarse dos instancias. Esto debe tener que ver con el concepto Cliente/Servidor. Puede haber varios Clientes trabajando codo a codo con un solo Servidor.

Así que habría que ver cómo organizas el asunto. Por ejemplo, no creo que sea cuestión de que cada Cliente trate de levantar una instancia del Servidor, sino de que cada Cliente compruebe si una instancia del Servidor está disponible, y, en caso de que lo esté, interactuar con ella sin tratar de ejecutar otra instancia del Servidor.

¿Qué haces al comienzo de la ejecución de dichas aplicaciones? ¿Tratas de levantar sí o sí una instancia del Servidor de Firebird? Porque de ser así ya sabes lo que ocurre: a la que trates de levantar una segunda instancia (y una tercera, una cuarta, etc.) no podrás hacerlo. Pero vamos, me voy a callar porque tampoco aporto ninguna solución concreta al asunto.

keys
12-02-2007, 19:08:11
Yo tengo un programa con firebird funcionando en terminal server, y lo que hago es que este se conecte como si fuera un cliente mas. Es decir como si la base de datos estaria en otro equipo.

Un Saludo. Espero que te sirva de algo.

Blasito
12-02-2007, 19:18:45
Hola,

Yo no es que sepa mucho del tema, pero, el problema no debe ser que Firebird no sea capaz de ejecutar dos instancias, sino que con una instancia debería ser suficiente. De ahí el problema si tratan de ejecutarse dos instancias. Esto debe tener que ver con el concepto Cliente/Servidor. Puede haber varios Clientes trabajando codo a codo con un solo Servidor.

Así que habría que ver cómo organizas el asunto. Por ejemplo, no creo que sea cuestión de que cada Cliente trate de levantar una instancia del Servidor, sino de que cada Cliente compruebe si una instancia del Servidor está disponible, y, en caso de que lo esté, interactuar con ella sin tratar de ejecutar otra instancia del Servidor.

¿Qué haces al comienzo de la ejecución de dichas aplicaciones? ¿Tratas de levantar sí o sí una instancia del Servidor de Firebird? Porque de ser así ya sabes lo que ocurre: a la que trates de levantar una segunda instancia (y una tercera, una cuarta, etc.) no podrás hacerlo. Pero vamos, me voy a callar porque tampoco aporto ninguna solución concreta al asunto.
Hola David

Yo pienso que al igual que SQL server de Micro$oft con lo que ya he probado varias aplicaciones y funcionan muy bien en Terminal Server el FireBird debe cargarse como un servicio y que las aplicaciones accedan a este sin volver a cargarlo ó subir el servicio.

Hablare entonces con el programador para ver que hace el para verificar si el servicio del FireBird esta arriba o no y para decirle que cambie la forma de programar la conexion con los datos, tocara hacer ensayos y ver que pasa, de todas formas Ustedes como programadores de Delphi deberian pensar en que sus aplicaciones puedan ser ejecutadas desde Terminal Server, bueno se van a encontrar justo con este problema.

Gracias a todos entonces por sus sugerencias y si alguien tiene algo que agregar que por favor lo haga.

Ing. Bladimir Silva T.
Adm. Windows Server 2003
Colombia.

Casimiro Notevi
12-02-2007, 20:55:51
Tengo clientes (la empresa donde trabajo) que desde las distintas sucursales trabajan en tiempo real en la central.
En algunos casos acceden a través del Terminal Server de windows y en otros con el de Linux. En ambos casos no hay problemas para trabajar múltiples usuarios al mismo tiempo y, por supuesto, sólo hay un firebird funcionando en el servidor.
El caso "típico" son varias sucursales, cada una con varios terminales, que acceden a uno o varios servidores de programas y desde estos servidores (donde están los programas en Delphi) se conectan a uno o varios servidores Linux (donde están las bases de datos y Firebird).
Cada sucursal accede por una línea adsl distinta para que no exista saturación en las líneas y para que en caso de caída de alguna (cada una es de distinta empresa) pueda seguir funcionando con el resto.
Firebird, en el servidor, siempre es sólo UNO, como Dios :) y él se encarga de aceptar todas las peticiones, procesarlas y devolver las respuestas.

Blasito
13-02-2007, 17:35:47
Listo Señores, muchas gracias por toda la informacion y experiencias que me han regalado, creo que mi problema es netamente del programador que no penso en Cliente/Servidor y de alli nace el error de las multiples instancias el FireBird.

Gracias a todos los que han ayudado.

Ing. Bladimir Silva T.
Adm. Windows Server 2003
Cartago-Valle
Colombia