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

ecfisa 17-06-2014 21:50:18

Problemas conectando Firebird 2.5 en red
 
Hola amigos.

Me encuentro que ha aparecido un problema de conexión al que no le encuentro la vuelta, y luego de unos días de búsqueda sin frutos los molesto con la consulta.

La situación en el servidor es,

S.O.
Windows 7 32 bit

Firewall


Antivirus
Desinstalado para la prueba.

Firebird Server Manager


firebird.conf
Cita:

...
# Type: string, integer
#
#RemoteServiceName = gds_db
#RemoteServicePort = 3050
...
# Type: integer
#
#RemoteAuxPort = 6020
...
IBExpert



Desde el cliente, siendo la IP de "SERVIDOR" igual a 192.168.1.64,

.- ping 192.168.1.64 -> Ok.

.- telnet 192.168.1.64 3050
netstat -an | find "3050" -> Nada encontrado (con netstat solo, 3050 tampoco aparece como conexión activa)

En IBExpert en Testear Conexión obtengo el error "Unable to complete network request to host "SERVIDOR". Con Test sobre TCP/IP: "Failed to connect to host "SERVIDOR" on port. Error Num: 10049".
Aquí,What are those 100XX errors in firebird.log?, encontré una descripción del error pero no veo la relación.

Por supuesto que no conecta a la base de datos, algo se ha modificado que se me está escapando y no logro ver que es....

Desde ya muy agradecido por cualquier observación.

Saludos :)

dec 17-06-2014 22:09:22

Hola,

Pongo aquí la descripción del error en concreto (copiado de la página que tú mismo enlazas ecfisa):

Cita:

WSAEADDRNOTAVAIL
(10049)
Cannot assign requested address.
The requested address is not valid in its context. This normally results from an attempt to bind to an address that is not valid for the local machine. This can also result from connect, sendto, WSAConnect, WSAJoinLeaf, or WSASendTo when the remote address or port is not valid for a remote machine (for example, address or port 0).
A mí me parece que "SERVIDOR" no está bien usado... desde mi total ignorancia pienso en usar "LOCALHOST" en su lugar, o una dirección IP, directamente, pero, no la cadena "SERVIDOR". Pero también puede ser que esté completamente equivocado y que eso, precisamente, no está causando el problema. A ver si algún compañero puede ayudarte ecfisa. :)

ecfisa 17-06-2014 22:29:52

Gracias David, ahora mismo voy a probar referenciando la conexión con la dirección IP en lugar de "SERVIDOR"
Código Delphi [-]
  IBDatabase.DatabaseName := '192.168.1.64:C:\Sistema\Datos\Base.FDB';
  { En lugar de:
     IBDatabase.DatabaseName := 'SERVIDOR:C:\Sistema\Datos\Base.FDB';
  }
y te comento (aunque siempre funcionó con el alias...)

Gracias nuevamente :)

Casimiro Notevi 17-06-2014 22:49:32

Yo siempre pongo la IP.

fjcg02 17-06-2014 22:53:27

Es que no sería SERViDOR sino PORTÁTIL el nombre del servidor en este caso. Por otro lado, haces telnet al puerto 3050? Por lo que veo está comentado el puerto en el fichero de configuración.

Saludos

ecfisa 17-06-2014 23:24:22

Cita:

Empezado por Casimiro Notevi (Mensaje 477942)
Yo siempre pongo la IP.

Hola Antonio, así lo hice y Desde delphi usando:
Código Delphi [-]
...
  IBDatabase.DatabaseName :='192.168.1.64:C:\Sistema\Datos\Base.FDB'
  try
    IBDatabase.Open;
  except
    MessageBox(0,'No se puede establecer la conexión con la base de datos','',MB_ICONERROR);
    Application.Terminate;
  end;
...
no me dió error de conexión el primer intento (aunque tardó una enormidad en mostrar los datos en una ventana).
Al cerrar y abrir nuevamente la aplicación otra vez el mensaje "No se puede establecer la conexión con la base de datos" :mad: (me está volviendo paranoico :D)


Cita:

Empezado por fjcg02 (Mensaje 477943)
Es que no sería SERViDOR sino PORTÁTIL el nombre del servidor en este caso. Por otro lado, haces telnet al puerto 3050? Por lo que veo está comentado el puerto en el fichero de configuración.

Saludos

Hola fjcg02.
Perdón "PORTATIL" fué un olvido al tomar la instantánea, el servidor es "SERVIDOR" y lo de telnet fué una de las tantas pruebas ante el desconcierto.

Desde el servidor netstat me arroja:
Código:

Proto  Dirección local  Dirección remota  Estado
TCP    127.0.0.1:350    SERVIDOR:49868    ESTABLISHED
...

Gracias por sus observaciones :)

Casimiro Notevi 17-06-2014 23:27:24

¿Pero firebird está funcionando?
¿Lo has probado en local?

juanelo 17-06-2014 23:52:54

A lo mejor está de mas, ¿pero has chequeado tu antivirus?, casi todos vienen con su propio firewall.
Saludos

Casimiro Notevi 17-06-2014 23:53:08

Cita:

Empezado por ecfisa (Mensaje 477945)
Código:

Proto  Dirección local  Dirección remota  Estado
TCP    127.0.0.1:350    SERVIDOR:49868    ESTABLISHED
...


¿Es un error en el copia/pega?, lo digo porque pone puerto 350 y no 3050.

ecfisa 17-06-2014 23:55:47

Cita:

Empezado por Casimiro Notevi (Mensaje 477946)
¿Pero firebird está funcionando?
¿Lo has probado en local?

Si, si el servicio está iniciado y como automático funciona correctamente en local de ambos modos:
Código Delphi [-]
  IBDatabase.DatabaseName := '192.168.1.64:C:\Sistema\Datos\Base.FDB';
  // también así
  IBDatabase.DatabaseName := 'SERVIDOR:C:\Sistema\Datos\Base.FDB';
Pero hace largas esperas en el cliente al mostrar pantallas y no supera los test de IBExpert.

Sigo intentando..

Saludos y muchas gracias :)

Casimiro Notevi 17-06-2014 23:58:31

Haz un gbak/restore, a ver si tiene algún defecto.

Casimiro Notevi 17-06-2014 23:59:36

En cuanto a que tarde mucho la primera vez, creo recordar que windows hacía una copia de la BD, desactiva la opción de "Restaurar sistema".

ecfisa 18-06-2014 00:23:29

Hola Antonio.

Aparentemente el problema de conexión desapareció usando el IP, pero sigue con la demora

Ya hice el backup/restore
Código:

gbak -b -v -t -user sysdba -password masterkey BASE.FDB BASE.FBK
...
gbak -r -v -p 8192 -REP -user sysdba -passord masterkey BASE.FBK BASE.FDB

Y también desactivé la restauración del sistema, hago unas pruebas y les comento el resultado.

Gracias :)

Edito: Así es, fue un error de copia/pega :o

ecfisa 18-06-2014 03:38:35

Cita:

Empezado por juanelo (Mensaje 477948)
A lo mejor está de mas, ¿pero has chequeado tu antivirus?, casi todos vienen con su propio firewall.
Saludos

Hola juanelo.

Si, desinstalé los antivirus en los dos equipos en que estoy probando el problema.

Gracias por tu sugerencia :)

ecfisa 18-06-2014 09:35:34

Hola amigos.

El problema de la conexión se resolvió usando la IP del servidor, pero el larguísimo retardo en mostrar los datos continua, son varios minutos para pocos datos. Por si pudiera servir como inicio de lo que sigue, inicio y cierro la transacción al crearse y cerrar el form respectivamente.

Me sorprendió ver que, desde el IBExpert o Delphi una sentencia como
Código SQL [-]
SELECT * FROM UNA_TABLA
muestra:
Código:

ID    CAMPO
430  ...
431  ...
432  ...
433  ...
434  ...
23    ...
24    ...
25    ...
26    ...
27    ...
...

cuando antes mostraba el campo ID de forma ascendente (por órden de inserción).

El detalle extraño es que pude comprobar que si miro directamente en los datos de una tabla estos aparecen ordenados por el ID como esperaba. Pero si hago un select sobre la misma este órden no se conserva, me temo que el retardo sea producto de esa situación...

Aunque no obtuve mensajes de error en ningún momento al usar gbak, y la aplicación aparentemente funciona correctamente en el servidor, pensé en una posible corrupción de la bd, de modo que apliqué los pasos sugeridos en este enlace Reparar una base firebird, pero la situación continua.

Si alguién conoce, o pasó por un caso similar, ¿ Sería una posible solución pasar los registros previamente ordenados a una copia vacía de la bd ?

Saludos :)

Casimiro Notevi 18-06-2014 09:43:48

Mira con el ibexpert si tienes desactivado índices, procedimientos, triggers, etc.

ecfisa 18-06-2014 10:30:57

Cita:

Empezado por Casimiro Notevi (Mensaje 477968)
Mira con el ibexpert si tienes desactivado índices, procedimientos, triggers, etc.

No se me había ocurrido^\||/, voy a controlar todo y luego les cuento :)

Saludos :)

ecfisa 19-06-2014 11:36:40

Hola.

No había nada raro en los índices, triggers, etc, el problema de la disposición de los ID lo resolví vaciando las tablas con afectadas y luego pasando los registros desde una copia mediante una consulta ordenada.

El problema de la demora es provocado por los TIBEvents creo que me sucedió alguna vez y lo resolví. Ahora tengo que acordarme como... :o :D

Saludos y muchas gracias nuevamente :)

ecfisa 19-06-2014 11:51:03

Hola.

Solucionado.

En el archivo firebird.conf:
Código:

...
#RemoteAuxPort = 6020
...

hay que quitar el numeral:
Código:

...
  RemoteAuxPort = 6020
...

Saludos :o

Casimiro Notevi 19-06-2014 12:02:57

El # indica que es 'comentario'.
Cita:

# buffers=50000 Esto no hace nada
buffers=50000 # ahora sí


La franja horaria es GMT +2. Ahora son las 04:31:32.

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