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)
-   -   Conectar Firebird en red (https://www.clubdelphi.com/foros/showthread.php?t=91251)

Angel.Matilla 13-12-2016 18:18:54

Conectar Firebird en red
 
No sé si esta pregunta ha de ir aquí o en otro subforo. Ruego a los administradores que me disculpen llegado el caso.

Tengo instalada una aplicación hecha con BCB 6 y FB 2.5 que ha de correr en red. En el puesto que actúa como servidor no ha habido ningún problema para ponerla en marcha, más allá de algunos flecos en la propia aplicación. Sin embargo en los puestos de resto de la red estoy teniendo problemas.

Estos puestos "ven" el servidor si entran a través del explorador de archivos de windows pero a pesar de poner la vía de acceso en el fichero aliases.conf de Firebird la aplicación no se conecta a la base de datos. Cuando se instaló el motor, en los clientes se hizo con la opción Instalación mínima de cliente - sin servidor ni herramientas. Están abiertos los puertos 3050 y 3051 en todos los equipos pero no hay manera. ¿Me falta algo?

jhonny 13-12-2016 18:34:20

¿Cuando dices que el 3050 está en todos los equipos también te refieres al servidor?... por otro lado, muéstranos un ejemplo de tu ruta de conexión a la base de datos, a lo mejor necesites usar otro protocolo.

Angel.Matilla 13-12-2016 19:07:34

1. Sí, me refiero tanto a los clientes como al servidor. Además, justo cuando estaba viendo tu repuesta me ha llamdo el cliente y es lo primero que le he preguntado. :)
2. La ruta de acceso es esta: \\JUANI\DatAfi30\Tablas. Está guardada en un fichero INI; la leo así:
Código PHP:

GetPrivateProfileString("DATOS""Tablas" "C:\\DatAfi30\\Tablas"cTablas sizeof(cTablas) , (ExtractFilePath(Application->ExeName) + "PtoDat30.ini").c_str()); 

y la asigno así:
Código PHP:

Afiliados->Connected false;
Afiliados->Params->Clear();
Afiliados->DatabaseName AnsiString(cTablas) + "Afiliados.fdb";
Afiliados->Params->Add("user_name=sysdba");
Afiliados->Params->Add("password=masterkey");
Afiliados->Params->Add("lc_ctype=ISO8859_1");
Afiliados->SQLDialect 3;
Afiliados->Connected true

Siendo Afiliados un TIBDatabase. Desde los clientes, con el explorador de windows, sí ven esas carpetas.

Otra cosa que me ha ocurrido. Por probar le pedí al usuario que un de los clientes instalara IBManager SQL Lite y no ha habido forma de conextarlo; vale que todas estas pruebas las estamos haciendo por teléfono ya que la instalación está a 150 Km. de donde resido y no hay posibilidad de instalar un escritorio remoto ya que les tiene cerrados muchos puertos en el router; de hecho no pudieron ni descargarse el instalador de FB y se lo tuve que mandar a travésde Google Drive.

Casimiro Notevi 13-12-2016 19:51:57

Las rutas tienen que ser absolutas y físicas, ejemplo:
192.168.1.100:C:\datos\basedatos.fdb

Y si usas los alias, debes poner es ruta y el nombre que quieras como alias:
ruta: 192.168.1.100:C:\datos\basedatos.fdb
alias: elservidor

Desde los clientes, obviamente, pondrás: elservidor

"elservidor" es solo un ejemplo, tú pones lo que te parezca.

ecfisa 13-12-2016 21:23:49

Hola.

Consulta, ¿ El contenido exácto de la cadena en cTablas es: "\\JUANI\DatAfi30\Tablas" ?

Saludos :)

lbuelvas 14-12-2016 02:30:21

Hola, recuerda si tienes en el servidor habilitado el firewall de windows habilitar tambien los puertos 3050 / 3051

Angel.Matilla 14-12-2016 09:55:34

Cita:

Empezado por Casimiro Notevi (Mensaje 511724)
Las rutas tienen que ser absolutas y físicas, ejemplo:
192.168.1.100:C:\datos\basedatos.fdb

Me vas a mandar a la porra: Lógicamente esa IP es la del servidor ¿verdad? ¿Cómo puedo saber por código desde un puesto cuál es la IP del servidor o no es posible?
Cita:

Empezado por Casimiro Notevi (Mensaje 511724)
Y si usas los alias, debes poner es ruta y el nombre que quieras como alias:
ruta: 192.168.1.100:C:\datos\basedatos.fdb
alias: elservidor

Desde los clientes, obviamente, pondrás: elservidor

¿Te refieres a que el fichero alises.conf debería quedar así?
Cita:

Afiliados = 192.168.1.100:C:\DatAfi30\Tablas\AFILIADOS.FDB
Cita:

Empezado por Casimiro Notevi (Mensaje 511724)
"elservidor" es solo un ejemplo, tú pones lo que te parezca.

Evidente, pero gracias por la puntialización.
Cita:

Empezado por ecfisa (Mensaje 511731)
Consulta, ¿ El contenido exácto de la cadena en cTablas es: "\\JUANI\DatAfi30\Tablas" ?

Exactamente, ese es el contenido de la cadena. Está definida como un char[256]. Y me acabo de dar cuenta por donde viene tu pregunta: si ese es el valor de la cadena, la dirección de la bb.dd. quedaría como
Cita:

\\JUANI\DatAfi30\TablasAfiliados.fdb
Pero no porque antes le he puesto la barra que falta; ya sé que es ridículo y que podía guardar la cadena completa con la barra final, pero no me di cuenta en su momento y lo dejé así.
Cita:

Empezado por lbuelvas (Mensaje 511736)
Hola, recuerda si tienes en el servidor habilitado el firewall de windows habilitar tambien los puertos 3050 / 3051

Pues mira, sé que se han abierto los puertos en los routers de los equipos pero lo del firewall no se me había ocurrido. Ahora mismo se lo pregunto.

fjcg02 14-12-2016 11:09:04

Haz un telnet al servidor por el puerto que tiene habilitado FB.

desde el prompt, es decir, desde un cmd escribe:

telnet direccionservidor puerto

si la pantalla se queda negra con algún mensajillo, es que llegas al servidor a través del puerto y el servidore responde.

Si o hace nada, es que no llegas, tienes problemas de conectividad -> puertos cerrados en el router o puertos cerrados en el firewall.

Ya nos dirás.

Saludos

Angel.Matilla 14-12-2016 13:33:23

Cita:

Empezado por fjcg02 (Mensaje 511746)
Haz un telnet al servidor por el puerto que tiene habilitado FB.

No encuentro en mi equipo para lanzar telnet, salvo que sea una aplicación que está en una carpeta de Windows.

cloayza 14-12-2016 13:37:49

A ver si te ayudo con esto.

Estas serías las distintas formas de conectar a la base de datos en red

Cita:

Indicando Nombre servidor
Juani:C:\DatAfi30\Tablas\Afiliados.fdb

Indicando Nombre servidor e indicando puerto
Juani/3050:C:\DatAfi30\Tablas\Afiliados.fdb

Usando Ruta UNC
\\Juani\C:\DatAfi30\Tablas\Afiliados.fdb

Usando Alias
Juani:Afiliados
Para mi lo mejor es definir un alias Alias.conf y así te evitas andar divulgando la ruta de la base de datos...

Para ello debes editar el archivo 'C:\Archivos de programas\Firebird_2_5\Alias.Conf' y agregar lo que sigue:

Cita:

#
# List of known database aliases
# ------------------------------
#
# Examples:
#
# dummy = c:\data\dummy.fdb
#
Afiliados=C:\DatAfi30\Tablas\Afiliados.fdb
Saludos cordiales

Angel.Matilla 14-12-2016 13:46:07

Muchas gracias por los ejemplos.

Una pregunta: En uno de los formatos pones Juani/3050:C:\DatAfi30\Tablas\Afiliados.fdb y una estructura simialr la he vistor pero separando la máquina del puerto con dos puntos (Juani:3050:C:...) ¿Cuál es la correcta?

cloayza 14-12-2016 15:43:47

Según el libro "Firebird Book: A Reference For Database Developers", en la página 40, indica que la forma de separar el puerto es:

Como el ejemplo

Juani/3050:C:\DatAfi30\Tablas\Afiliados.fdb


sic:
Cita:

hotchicken/fb_db:/Data/leisurestore.fdb
El puerto va separado por un /

Saludos cordiales

Angel.Matilla 14-12-2016 17:15:16

Ok. Gracias.

ecfisa 14-12-2016 20:30:57

Cita:

Empezado por Angel.Matilla (Mensaje 511741)
...
Exactamente, ese es el contenido de la cadena. Está definida como un char[256]. Y me acabo de dar cuenta por donde viene tu pregunta: si ese es el valor de la cadena, la dirección de la bb.dd. quedaría como
Pero no porque antes le he puesto la barra que falta; ya sé que es ridículo y que podía guardar la cadena completa con la barra final, pero no me di cuenta en su momento y lo dejé así.
...

Si, pero considero que igual quedaría incompleta. Por favor proba asignando de modo directo esta cadena:
Código:

Afiliados->DatabaseName = "\\\\JUANI\\DatAfi30\\Tablas\\Afiliados.fdb";
Saludos :)

fjcg02 14-12-2016 21:28:02

Si no tienes el telnet vete a instalar software , componentes de Windows, buscas telnet, lo marcas y lo instalas.

Así podrás utilizarlo.

Saludos

Angel.Matilla 15-12-2016 09:38:20

Cita:

Empezado por ecfisa (Mensaje 511774)
Si, pero considero que igual quedaría incompleta. Por favor proba asignando de modo directo esta cadena:
Código:

Afiliados->DatabaseName = "\\\\JUANI\\DatAfi30\\Tablas\\Afiliados.fdb";

Ya entiendo lo que quieres decirme. He puesto CÓMO está guardado el valor en el fichero ini, pero al leerse la variable se ve como pones tú.
Cita:

Empezado por fjcg02
Si no tienes el telnet vete a instalar software , componentes de Windows, buscas telnet, lo marcas y lo instalas.

Lo probaré. No obstante antes quiero probar las sugerencias de cloayza.

ecfisa 15-12-2016 15:27:52

Hola.

A mi siempre me ha funcionado tanto con el IP, nombre NetBIOS o alias.

Ejemplos:
1)
Código PHP:

  IBDatabase1->DatabaseName "192.168.0.7:C:\\RUTA_PROGRAMA\\RUTA_DATOS\\BASE_DE_DATOS.FDB" 

2)
Código PHP:

  IBDatabase1->DatabaseName "NOMBRE_SERVIDOR:C:\\RUTA_PROGRAMA\\RUTA_DATOS\\BASE_DE_DATOS.FDB" 

3)
Código PHP:

  db->DatabaseName "NOMBRE_SERVIDOR"

Y en aliases.conf (server):
Código:

# List of known database aliases
# ------------------------------
# Examples:
# dummy = c:\data\dummy.fdb

NOMBRE_SERVIDOR = C:\RUTA_PROGRAMA\RUTA_DATOS\BASE_DE_DATOS.FDB

básicamente lo que publicó cloayza.

También controla lo que te menciona lbuelvas en el firewall del servidor ( Como abrir un puerto en windows 7 o vista ).

Saludos :)

Edito: Olvidé mencionar a Casimiro que en el cuarto mensaje también citó sintáxis correctas. :o

Angel.Matilla 15-12-2016 17:33:10

¡Hijo! ¡Qué profusión de información! :)
Muchas gracias. Iremos probando a ver que pasa y os diré. El Firewal es en Eindows 10, por cierto.

ecfisa 15-12-2016 17:36:00

Hola de nuevo.

Cómo abrir o cerrar un puerto con el firewall en Windows 10

Saludos :)

Angel.Matilla 15-12-2016 17:52:09

Muchas gracias.


La franja horaria es GMT +2. Ahora son las 03:49:37.

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