Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-07-2017
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Gracias por la respuesta. Vamos allá.
  • El servidor tiene que estar instalado en el ordenador que haga de servidor. OK
  • Este ordenador tendrá una IP asignada ??
  • El puerto TCP/3050 debe estar abierto para permitir conexiones desde la red. OK
  • La base estará en una carpeta OK
  • La base de datos tendrá un nombre y una extensión .FDB OK
  • El servidor de base de datos, tiene un nombre de usuario y contraseña por defecto (SYSDBA - masterkey) que pueden cambiarse y dependiendo de la instalación quizás sea una contraseña generada al azar y que estará un un fichero en la misma carpeta donde se ha instalado (Linux normalmente) OK (pero la instalación es en Windows)
  • El fichero de configuracion de Firebird tiene un item donde dice desde qué IPs externas se puede conectar. (En una instalación en Ubuntu he tenido que tocarlo). ??
Con esto debes conectar desde otros ordenadores con

Windows: 192.168.1.1:C:\Datos\Base.FDB >> Estoy tratando de acceder con Servidor/3050:D:\DatAfi30\Tablas\Afiliados.fdb

Cita:
Empezado por duilioisola
En los clientes hago la instalación mínima. Esto pone cada cosa en su lugar.
En la otra instalación que tengo hecha de esta aplicación creo recordar pero no estoy 100% seguro que en el puesto no se puso nada más que la librería

Cita:
Empezado por duilioisola
Todo depende del mensaje de error...
Si te dice algo como '#10060', es normalmente un problemda de red.
Si te dice algo como 'username or password incorrecto', es nombre de usuario y contraseña.
si te dice algo como 'file not found' puede ser que la base no esté donde la buscar o que no coinciden mayúsculas y minúsculas (linux).

Envía el mensaje de error sin tocar ni traducir para que podamos ayudarte un poco mas...
Esto último va a ser más complicado porque en la instalación tengo montada una minigestión de errores y genero yo los mensajes que me interesan. El mensaje que se muestra al arrancar me avisa que el servicio FB no está activo; es casi lo primero que hago al lanzar la aplicación: validar que FB está arrancado. Sí he comprobado que en el servidor la aplicación se lanza bien y sin problemas. La validación la hago con esto:
Código:
try
{
     if (!isFirebirdRunning())
          throw Exception("El servicio Firebird no está activo.\nRevise su estado en:\n\n· Panel de control\n· Herramientas administrativas\n· Servicios\n· Firebird Server");

     Application->Initialize();
     Application->Title = cVersion;
     Application->CreateForm(__classid(TfPersona), &fPersona);
     Application->Run();
}
catch (Exception &exception)
{
     Application->ShowException(&exception);
}
Y la función llamada es esta:
Código:
#pragma hdrstop

#include "checkFirebird.h"
#include "WinSvc.hpp"

#pragma package(smart_init)
//---------------------------------------------------------------------------

DWORD ServiceStatus(const char* &sMachine, const char* &sService)
{
     SC_HANDLE schm, schs;
     TServiceStatus ss;
     DWORD dwStat = 0;

     schm = OpenSCManager(sMachine, NULL, SC_MANAGER_CONNECT);

     if (schm > 0)
     {
          schs = OpenService(schm, sService, SERVICE_QUERY_STATUS);

          if (schs > 0)
          {
               if (QueryServiceStatus(schs, &ss))
                    dwStat = ss.dwCurrentState;
               CloseServiceHandle(schs);
          }
          CloseServiceHandle ( schm );
     }
     return dwStat;
}
//---------------------------------------------------------------------------

bool isFirebirdRunning(void)
{
     return ServiceStatus("", "FirebirdServerDefaultInstance") == SERVICE_RUNNING;
}
//---------------------------------------------------------------------------
Creo recordar que la saqué de este foro.
Responder Con Cita
  #2  
Antiguo 21-07-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Angel.Matilla Ver Mensaje
Windows: 192.168.1.1:C:\Datos\Base.FDB >> Estoy tratando de acceder con Servidor/3050: D:\DatAfi30\Tablas\Afiliados.fdb
Haz caso de lo que dice duilioisola.
Además, si la unidad D: no es un disco físico del servidor (sino una unidad de red), tampoco funcionará,
Responder Con Cita
  #3  
Antiguo 21-07-2017
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Haz caso de lo que dice duilioisola.
Además, si la unidad D: no es un disco físico del servidor (sino una unidad de red), tampoco funcionará,
Probaré. D es un disco físico del servidor.
Responder Con Cita
  #4  
Antiguo 21-07-2017
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Poder: 14
engranaje Va por buen camino
Por aportar algo que puede ser de ayuda, en la carpeta en la que se instaló firebird encontraras un fichero ALIASES.CONF
Puedes editar ese archivo escribiendo el nombre del alias que tu decidas, seguido de igual y de la ruta física del fichero con la BD. Por ejemplo
TIENDA = C:\DATOS\TIENDA.FDB
ALMACEN = D:\BBDD\ALMACEN.FDB

Si en tu caso estás intentando accede a:
Servidor/3050: D:\DatAfi30\Tablas\Afiliados.fdb
y d: es una unidad del servidor, podrías configurar el ALISASES.CONF asi:
AFILIADOS = D:\DatAfi30\tablas\Afiliados.fdb
y concectarte de esta forma
Servidor/3050: AFILIADOS
Responder Con Cita
  #5  
Antiguo 21-07-2017
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Prueba a hacer un ping a Servidor desde el cliente, para ver si resuelve correctamente la dirección:

Código:
C:\> ping Servidor
Haciendo ping a Servidor [fexx::3dxx:19xx:c5xx:d4xx%3] con 32 bytes de datos:
Respuesta desde feexx::3dxx:19xx:c5xx:d4xx%3: tiempo<1m
Respuesta desde feexx::3dxx:19xx:c5xx:d4xx%3: tiempo<1m
Respuesta desde feexx::3dxx:19xx:c5xx:d4xx%3: tiempo<1m
Respuesta desde feexx::3dxx:19xx:c5xx:d4xx%3: tiempo<1m

Estadísticas de ping para feexx::3dxx:19xx:c5xx:d4xx%3:
    Paquetes: enviados = 4, recibidos = 4, perdidos = 0
    (0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:
    Mínimo = 0ms, Máximo = 0ms, Media = 0ms

C:\>
De todos modos, en el servidor puedes obtener la dirección IP mediante el comando ipconfig:

Código:
C:\>ipconfig

Configuración IP de Windows

Adaptador de Ethernet Ethernet:

   Sufijo DNS específico para la conexión. . :
   Vínculo: dirección IPv6 local. . . : fexx::c4xx:edxx:61:13xx%7
   Dirección IPv4. . . . . . . . . . . . . . : 10.10.9.42
   Máscara de subred . . . . . . . . . . . . : 255.255.255.0
   Puerta de enlace predeterminada . . . . . : 10.10.9.254
...
Responder Con Cita
  #6  
Antiguo 21-07-2017
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola....

Algo me dice que estás tratando de verificar si el servicio de FB está funcionando en las PC's cliente, algo que siempre te va a dar error ya que el servicio solo está activo en el equipo servidor...

Verifica si es eso lo que estás haciendo, o al menos indica que valores le pasas a los parámetros de la función ServiceStatus....



Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #7  
Antiguo 21-07-2017
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por duilioisola Ver Mensaje
Prueba a hacer un ping a Servidor desde el cliente, para ver si resuelve correctamente la dirección:
Pues no se me había ocurrido

Cita:
Empezado por maeyanes Ver Mensaje
Algo me dice que estás tratando de verificar si el servicio de FB está funcionando en las PC's cliente, algo que siempre te va a dar error ya que el servicio solo está activo en el equipo servidor...

Verifica si es eso lo que estás haciendo, o al menos indica que valores le pasas a los parámetros de la función ServiceStatus...
Creo que tienes razón. La función que uso es tal cual la he puesto antes, así que efectivamente estoy comprobando si funciona donde se lanza el programa. Sin embargo, tal cual está escrito está funcionando en otra red sin ningún probelam y por eso no la he tocado; pero tienes razón en esa puntualización porque ahora mismo no recuerdo cómo está montada esa otra red y no tengo acceso directo a ella. Está a más de 120 Km. de mi residencia y no podemos montar un escritorio remoto como TeamViewer porque les han capado TODOS los puertos de acceso externos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Conexion VPN m8estrella83 Redes 2 08-05-2012 02:17:59
Conexion a DBF con ADO totote Conexión con bases de datos 9 02-06-2008 10:01:37
Conexion ftp fedelphi Varios 2 24-01-2007 21:31:55
conexion en red alfil123 Conexión con bases de datos 2 02-11-2006 21:09:14
Conexión a VPN Novás Internet 1 22-08-2006 16:18:17


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


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
Copyright 1996-2007 Club Delphi