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)
-   -   Como trabajar una DB en red? (https://www.clubdelphi.com/foros/showthread.php?t=26584)

JuanErasmo 27-10-2005 16:05:51

Como trabajar una DB en red?
 
Buenos Dias amigos.
Estoy intentando leer una base de datos que esta en otro equipo en mi red de trabajo. No me he podido conectar y no se porque.
Supuestamente solamente es invocar el path de la base de datos y ya, pero no me funciona. Como debe ser la configuracion entonces?
Debe ser local, remota, que es eso de la direccion isc4.gdb?
Debo reintalar el servicio del firebird?
Ayudenme por favor.... estoy en un apuro.
Gracias!

dec 27-10-2005 16:17:47

Hola,

Me duele decirlo, pero, creo yo que no estaría demás que especificaras unas cuantas cosas, conviene a saber, la herramienta que estás usando (¿Delphi, C++ Builder, otra?), y su versión. Tampoco estará demás que expliques cuanto más detalladamente mejor cómo estás tratando de conectar: si puede ser incluye el código fuente que puedas considerar oportuno.

En fin, que me parece a mí que si estás en un apuro bien podías molestarte (si es molestia) en describir cuanto más mejor tu problema, puesto que si no se perderá mucho tiempo solamente en averiguar todo el abanico de datos que podrías desde ya proporcionar. A continuación se verá qué puede hacerse por ti, que ya sabes de otras ocasiones que por intentarlo no quedará.

JuanErasmo 27-10-2005 16:28:45

Hola Dec, mira la situacion es la siguiente:

Tengo una aplicacion que escribe en una base de datos local, hasta ahí no hay ningun problema.
Pero al cambiarle el path de la base de datos me sale el error " EIBInterbase Error with message operating system directive Create file failed Acceso denegado". Estoy usando Builder.
Mi pregunta es : cuando la base de datos es aqui en el mismo equipo funciona perfecto. Pero cuando la intento leer de otro equipo la misma base de datos, me sale ese error. Cual debe ser la configuracion del Firebird? Debo hacer desde el principio la DB para decirle que va a ser leida remotamente?
ya esta corriendo el servicio pero ya no se que hacer....
Gracias por tu ayuda.

JuanErasmo 27-10-2005 16:36:11

Se me escapaba un detalle importante...

En el equipo donde está la bese de datos me sale el siguiente error:

Missing configuration file C:|Archivos de programa\firebird\firebird_1_5\aliases.conf
Tal vez esa sea la clave, pero no la he podido descifrar...
Gracias.

dec 27-10-2005 16:46:38

Hola,

Aquí estoy yo tratando de ayudarte con algo que no conozco ni medio mal siquiera... en fin. Se me ocurre que otros lo harían (o lo harán) me... aparte. Se me ocurre que refieras aquí mismo la ruta de la base de datos a que te estás tratando de conectar, más que nada por ver si esta sigue un "patrón" correcto, puesto que creo que has de incluir antes de la misma la dirección IP de la máquina en que esté la base de datos, y eso para empezar... :p

JuanErasmo 27-10-2005 16:56:59

lo que estoy haciendo es compartir la carpeta de la base de datos en la red,
y asi ahorrarme la IP. Yo creo que la conexión está bien porque sino no sacaría el error en la otra máquina. Lo que falla creo que es la configuracion del servicio.
Tambien he intentado abrir la DB desde el Firebird manager, y saca el mismo error. El codigo que utilizo es el siguiente:

IBDatabase1->DatabaseName=OpenDialog1->FileName;
IBDatabase1->Connected=true;
IBTransaction1->DefaultDatabase= IBDatabase1;
IBTransaction1->Active=true;
IBTable1->Transaction=IBTransaction1;
IBTable1->Database=IBDatabase1;
IBTable1->TableName="PACIENTES";
IBTable1->Active=true;
DataSource1->DataSet=IBTable1;
DBGrid1->DataSource=DataSource1;

Y funciona si la base de datos esta ubicada aquí en el mismo equipo.

Gracias por tu buena disposición para ayudarme, soy un novato en este tema de las bases de datos.

Lepe 27-10-2005 17:01:53

En principio al ser remota:
- Tendrás que instalar Firebird SQL Server (como servicio o como aplicación, según quieras) yo tengo instalado este: Firebird-1.5.0.4288_RC9_Win32.exe creo que ya anda la 2.0 por ahí.

- La carpeta donde resida la BBDD deberá estar compartida en el servidor, con acceso de escritura.

- Cuidado con los Firewalls (cortafuegos) que corten el puerto usado por Firebird.

- En tu programa, tendrás que dar doble clic sobre el IBdatabase, y ahí especificar que la conexión es "remote" indicando los parámetros.

- Si estas usando Interbase que viene con delphi, ten en cuenta que solo tienes licencias para 3 usuarios concurrentes. Si van a ser más de 3 usuarios, te recomiendo, por ejemplo, los Mercury

No sé si se me escapa algo. Saludos

JuanErasmo 27-10-2005 17:12:50

Sabes que puerto utiliza el FireBird?
y otra pregunta, es necesario bajar el Firebird SQL server?
Como son los parámetros en la configuracion de la DB?
En Server va la IP? Que es SQL rol? y como se indica el path?
Muchas gracias por tu colaboración.

Lepe 27-10-2005 17:30:00

Cita:

Empezado por JuanErasmo
Sabes que puerto utiliza el FireBird?

el 3050 por defecto.

Cita:

Empezado por JuanErasmo
y otra pregunta, es necesario bajar el Firebird SQL server?

No estoy seguro del todo, pero la lógica que yo aplico me dice que si. Tienes la BBDD en un servidor y varías personas accediendo a ella, de alguna forma se tiene que controlar el acceso simultaneo y/o concurrente, bloqueos y demás, y quien lo hace es el Firebird Guardian o tambien llamado Firebird SQL server.

Cita:

Empezado por JuanErasmo
Como son los parámetros en la configuracion de la DB?

Al dar doble clic sobre el IBdatabase te aparece una ventana, y desde allí tienes el boton para localizar la base de datos, usalo y verás como traduce la dirección y el path a la BBDD.

Lamento no poder darte los datos correctos, no tengo delphi a mano.

Cita:

Empezado por JuanErasmo
Que es SQL rol?

En principio, no habrás especificado roles, porque si lo hubieras hecho, sabrías que es ;) (no pongas nada en esa caja).

Cita:

Empezado por JuanErasmo
Muchas gracias por tu colaboración.

Para eso estamos ;)

saludos

JuanErasmo 27-10-2005 17:49:13

Ya lo hice! Gracias a tu ayuda Lepe, sin embargo hay un problema.
Sale una excepción donde está la DB remota, diciendo que el archivo aliases
no esta la base de datos...
luego le doy aceptar, y si me carga la base de datos. Como configuro ese archivo aliases?
Sabes como se configura ese archivo para que la lea?
Gracias!

Casimiro Notevi 27-10-2005 19:57:55

Unos detallitos:

Cita:

Empezado por Lepe
- La carpeta donde resida la BBDD deberá estar compartida en el servidor, con acceso de escritura.

Si estamos hablando de firebird, no hay que compartir nada en el servidor para tener acceso a la base de datos.

Cita:

Empezado por Lepe
- Si estas usando Interbase que viene con delphi, ten en cuenta que solo tienes licencias para 3 usuarios concurrentes. Si van a ser más de 3 usuarios, te recomiendo, por ejemplo, los Mercury

Interbase es el gestor de bases de datos y los componentes Mercury sirven para acceder a las bases de datos de interbase.
Si necesitas más licencias de interbase puedes comprarlas o pasarte a firebird que es libre y no tiene limitación en ese aspecto.
En cuanto a los componentes Mercury también son libres y sin limitaciones.

Saluditos.

JuanErasmo 27-10-2005 20:58:10

Gracias a todos!

Su ayuda fue fundamental!

JuanErasmo 27-10-2005 20:59:27

Pero una última cosa.... cuando sale el error de aliases.conf, que se debe hacer?

jachguate 27-10-2005 21:02:55

probablemente hayas borrado el archivo. Simplemente crea un archivo en blanco con ese nombre en la carpeta donde está instalado firebird.

Hasta luego.

;)

jachguate 27-10-2005 21:07:28

Otra posibilidad es que no estes enviando la ruta completa de la bd en la cadena de conexión, con lo que el motor trata de buscar un alias para dicha cadena (confieso que desconozco el comportamiento en ese caso).

He probado en local, renombrando mi aliases.conf, y he podido conectarme cuando envío la ruta completa. Si envio el un alias, digamos "repuesto", busca un archivo llamado "repuesto" en "c:\documents and settings\jachguate". uso firebird 1.5.3.

Hasta luego.

;)

JuanErasmo 27-10-2005 21:14:34

Ahí esta el archivo pero ay que registrar el alias.... sabes como se registra el alias?
Gracias.

Casimiro Notevi 27-10-2005 21:35:36

En el fichero aliases.conf escribe un alias para la ruta de la base de datos.

Ejemplo:

Código:

  MisDatos = 192.168.0.1:c:\datos\mibasedatos.fdb
El alias en este caso es "MisDatos"


Si no tienes alias, seguramente el alias será el mismo nombre de la base de datos.

Ejemplo:

Código:

mibasedatos.fdb = 192.168.0.1:c:\datos\mibasedatos.fdb

Creo recordar que es así.

jachguate 27-10-2005 22:23:22

Cita:

Empezado por JuanErasmo
sabes como se registra el alias?

Cita:

Empezado por c:\fb\aliases.conf
#
# List of known database aliases
# ------------------------------
#
# Examples:
#
# dummy = c:\data\dummy.fdb
#
..
repuesto = C:\Documents and Settings\jachguate\Mis documentos\Data\repuesto.fdb

uso:

Código Delphi [-]
  ibdrepuesto.DatabaseName := 'database.repuesto.com:repuesto';
  // o
  ibdrepuesto.DatabaseName := '192.168.1.27:repuesto';

En todo caso, definir alias, aunque es recomendable, es optativo. Es decir, no necesitas un alias para conectarte a una base de datos desde la red. Podes seguirte conectando con la cadena de conexión incluyendo la ubicación completa del archivo de base de datos.

Hasta luego.

;)

Lepe 27-10-2005 23:12:40

Cita:

Empezado por Casimiro Notevi
Unos detallitos:

Si estamos hablando de firebird, no hay que compartir nada en el servidor para tener acceso a la base de datos.

Aqui me has dejado groki, no lo sabía, y supongo que hablarás con conocimiento de causa, así que gracias por el dato.

Cita:

Empezado por Casimiro Notevi
Interbase es el gestor de bases de datos y los componentes Mercury sirven para acceder a las bases de datos de interbase.
Si necesitas más licencias de interbase puedes comprarlas o pasarte a firebird que es libre y no tiene limitación en ese aspecto.
En cuanto a los componentes Mercury también son libres y sin limitaciones.

Si te fijas en su segundo mensaje, está trabajando con Firebird, pero usa Interbase para acceder, por tanto, solo tiene que usar las GExperts para reemplazar los IBDatasets por MDODataset (aunque no lo he probado, creo que el cambio puede ser relativamente rápido).

Casimiro Notevi 27-10-2005 23:44:38

Cita:

Empezado por Lepe
Aqui me has dejado groki, no lo sabía, y supongo que hablarás con conocimiento de causa, así que gracias por el dato.

Cuando desde un "pc cliente" haces una consulta a una base de datos que está alojada en un "pc servidor", el cliente hace la petición al programa servidor de bases de datos, y éste último es el que accede a la base de datos, o sea, un cliente no puede acceder directamente a la base de datos, hace peticiones al servidor para que sea éste el que acceda a ella.

Como ejemplo siempre pongo el caso del restaurante, nosotros como clientes hacemos peticiones al servidor (camarero) y es el camarero el que accede a la cocina (base de datos de alimentos), pero nosotros como clientes no tenemos acceso directo a la cocina (base de datos), muchas veces ni siquiera podemos verla.

Así que el único que tiene acceso a la base de datos, en este caso, es firebird, nosotros, como cliente, únicamente podemos hacerle peticiones y él nos contesta (nos sirve) ;)

Por lo tanto, al servidor no debemos tener ningún tipo de acceso, más que nada por seguridad.

Saludos.


La franja horaria es GMT +2. Ahora son las 07:16:48.

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