PDA

Ver la Versión Completa : Problemas conectando Firebird 2.5 en red


ecfisa
17-06-2014, 21:50:18
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
http://sia1.subirimagenes.net/img/2014/06/17/140617091705355280.png

Antivirus
Desinstalado para la prueba.

Firebird Server Manager
http://sia1.subirimagenes.net/img/2014/06/17/140617092248795635.png

firebird.conf

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


IBExpert
http://sia1.subirimagenes.net/img/2014/06/17/140617092601594071.png


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? (http://www.firebirdfaq.org/faq119/), 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):


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"

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
Yo siempre pongo la IP.
Hola Antonio, así lo hice y Desde delphi usando:

...
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)


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:

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
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
¿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:

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

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
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
SELECT * FROM UNA_TABLA
muestra:

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 (http://www.clubdelphi.com/foros/showthread.php?t=62593), 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
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:

...
#RemoteAuxPort = 6020
...

hay que quitar el numeral:

...
RemoteAuxPort = 6020
...


Saludos :o

Casimiro Notevi
19-06-2014, 12:02:57
El # indica que es 'comentario'.
# buffers=50000 Esto no hace nada
buffers=50000 # ahora sí