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 13-07-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Paradox en red - Releyendo el articulo!!!

Configuracion paradox + BDE + windows Xp en dos ordenadores

Problema 1
-------------
Hola amigos. He releido 40 veces dicho articulo y deja muy clarito que en todas las máquinas se debe usar la misma carpeta en notación UNC. Pero Windows Xp no deja acceder a esa carpeta de red si el ordenador que actua de cliente está apagado (dice que la red no está operativa), por tanto el ordenador que tiene la base de datos, no puede conectar con la base de datos.

¿Hay forma cristiana de decirle a windows que no compruebe la red, o engañarlo y que acceda a la carpeta ?

¿Otra posible configuración?

Problema 2
-------------
La solución que he estado usando es poner en el que actua de servidor la carpeta netfiledir := C:\bd\net y en el cliente usar la notacion UNC, pero al acceder el ordenador que actua de cliente y modificar la base de datos obtengo un bonito corrupt index/table header. Lo que no sé es por qué se produce este error, lo más que he podido encontrar es que ese error pertenece a la categoria:
Cita:
Physical Data Corruption

8961 : $2301 : Corrupt table/index header.
8962 : $2302 : Corrupt file - other than header.
8963 : $2303 : Corrupt Memo/BLOB file.
8965 : $2305 : Corrupt index.
8966 : $2306 : Corrupt lock file.
8967 : $2307 : Corrupt family file.
8968 : $2308 : Corrupt or missing .VAL file.
8969 : $2309 : Foreign index file format.
Que no me aclara mucho el problema.


He buscado en el foro y he encontrado la aplicación CAERQUES que comentaba marcosZorrilla en un hilo. Con esto espero se solucione el Problema 2, pero, y el Primer problema?

Despues de un año funcionando el programa sin errores, ahora, en 2 dias ha dado el error de corrupt index / table 3 veces !!!

Cualquier sugerencia la agradeceré Eternamente.

PD: Si no me he explicado bien, por favor, pregúntenme. Esto me tiene muy quemado

Última edición por Lepe fecha: 13-07-2004 a las 16:40:05.
Responder Con Cita
  #2  
Antiguo 13-07-2004
vani vani is offline
Miembro
 
Registrado: may 2004
Posts: 20
Poder: 0
vani Va por buen camino
Indices Corruptos

Hola.

Echale un ojo:
http://www.marteens.com/trick12.htm

Espero te sirva, un saludo
Responder Con Cita
  #3  
Antiguo 13-07-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
La verdad es que yo he configurado varias veces el paradox en una red XP y no da ese error que mencionas, ese error de corrupt header me daba recisamente cuando configuraba mal el BDE.

A ver yo configuro la red en el xp de manera sencilla, por medio de un grupo de trabajo, y el unico protocolo de las maquinas el IP, y me funciona a las mil maravillas, por lo visto tu problema no esta en la corrupcion, dado que ese se arregla con la buena configuracion del BDE
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #4  
Antiguo 13-07-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Muchas gracias a ambos por contestar. Vani chequeo el link mas despacio y os cuento.

Cita:
Empezado por eduarcol
ese error de corrupt header me daba recisamente cuando configuraba mal el BDE.
Te refieres a indicar las rutas en UNC en ambos ordenadores o a otros parametros del BDE?

el que tiene las BBDD
localshare := true
netfiledir := 'c:\bd\net';

el que accede por la red
localshare := false
netfiledir := '\\miserver\bd\net';

Cita:
Empezado por eduarcol
A ver yo configuro la red en el xp de manera sencilla, por medio de un grupo de trabajo, y el unico protocolo de las maquinas el IP, y me funciona a las mil maravillas
Sí, yo tambien por un grupo de trabajo (red microsoft)
Responder Con Cita
  #5  
Antiguo 13-07-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
si, se me paso decirte segun el articulo, o sea todo con UNC. EL problema en realidad es que no puedes configurar la red del XP.

Sera que estas utilizando el asistente, porq no pruebas a hacerlo de forma manual.
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #6  
Antiguo 13-07-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Cita:
el que tiene las BBDD
localshare := true
netfiledir := 'c:\bd\net';

el que accede por la red
localshare := false
netfiledir := '\\miserver\bd\net';
El que tiene las BBDD también tiene que acceder por la red, sino cuando funcionen ambos a la vez te producirá este error que comentas, yo configuro uno solamente generalmente el que tiene las BBDD con UNC, y luego copio el archivo de configuración a los otros, entendiendo que ya tengo instalado el BDE en todos.

Además yo configuro:
PrivateDir := C:\Temp
Asegurándome de que dicha carpeta existe en todos los equipos y en caso contrario creándola, también antes de la creación del primer DataModulo me aseguro de borrar todos los ficheros de tipo *.lck si existiera, ya que estarían localicados en la carpeta citada.
Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.

Última edición por marcoszorrilla fecha: 13-07-2004 a las 19:01:36.
Responder Con Cita
  #7  
Antiguo 13-07-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Cita:
Empezado por marcoszorrilla
El que tiene las BBDD también tiene que acceder por la red,
Cita:
Empezado por Eduardocol
Sera que estas utilizando el asistente, porq no pruebas a hacerlo de forma manual.
Exacto ambos habeis dado en el clavo. La red ya estaba montada y funcionando cuando yo llegué. Por otra parte los usuarios son "noveles" así que no le va nada las complicaciones.

Uso la comparticion de archivos simple de windows XP.
La carpeta está compartida con acceso total.
el nombre del recurso compartido es 'BD'
La carpeta real reside en 'C:\BD'
La red tiene más protocolos instalados además del IP, (usa impresora compartida y conexion a internet)

Meteré mano a la red y os cuento.

Muchas gracias, es un honor poder contar con Ustedes.
Responder Con Cita
  #8  
Antiguo 13-07-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Yo nada más quiero acotar que jamás he utilizado rutas en notación UNC directamente.

Instalo la aplicación en una carpeta "sistema" con una subcarpeta "tablas" para las tablas:

Código:
C:\
  |__sistema
          |__ tablas
en el "servidor" y comparto esta carpeta. En las pc "cliente" mapeo una unidad a la carpeta compartida:

S: --> \\servidor\sistema (aquí sí UNC pero vía Windows no en código)

y configuro el alias del bde para que apunte a S:\tablas. En el "servidor" configuro el alias directamente a c:\sistema\tablas.

La aplicación, ahora sí el código, contiene una componente TDataBase que, además del alias, inicializo así:

Código Delphi [-]
Database.Session.NetFileDir := ExpandFileName(Database.Directory + '..');
Database.Session.PrivateDir := GetWindowsTempDir;

Nada de agregar una componente TSession que para eso Delphi da una por defecto.

Entonces el directorio Net es el mismo que donde está el ejecutable.

No es exactamente lo que recomienda el artículo pero huelga decir que accedo sin ningún problema desde el mismo "servidor" y desde cualquier "cliente" sea éste Win9x, Win2k o WinXP. El único problema que ocasionalmente se presenta es el de "Index Out Of Date" pero sólo cuando por alguna razón se cierra el Windows del "servidor" "a la mala" estando tablas abiertas.

// Saludos

Última edición por roman fecha: 13-07-2004 a las 19:53:30. Razón: Etiqueta mal colocada
Responder Con Cita
  #9  
Antiguo 14-07-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Roman, solo hay un detalle que se me escapa, en esta línea
Código Delphi [-]
Database.Session.NetFileDir := ExpandFileName(Database.Directory + '..');

el Database.Directory, lo asignas tú en código, en diseño....

Yo primero confguro el Session y despues el Tdabase, por tanto, esa propiedad me devuelve la cadena vacia al consultarla


Saludos
Responder Con Cita
  #10  
Antiguo 14-07-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Lepe
Yo primero confguro el Session y despues el Tdabase, por tanto, esa propiedad me devuelve la cadena vacia al consultarla
Cierto. Se me fué en el "recorta y pega". Antes de asignar NetFileDir y PrivateDir debes conectar el Database:

Database1.Connected := true;

Luego de esto, Directory debe ya contener la ruta a la que apunta el alias.

// Saludos
Responder Con Cita
  #11  
Antiguo 21-07-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Hola de nuevo:

Hartito de hacer pruebas llego a la conclusión de que los 2 Hordenadores deben estar encendidos para que funcione todo bien.

Todas las pruebas tienen la misma conclusión: "la red debe estar habilitada y funcionando para que windows permita el acceso." (Parece lógico, pero no lo fue para mi en alguna situación)

Básicamente es lo que decíais en los primeros mensajes, pero mi ignorancia no me dejaba ver el por qué de todo eso, así que me he recalentado las neuronas, y me ha servido para entender esa "nubecita" que era el BDE, localshare y algunas cosas más sobre la red.

El hecho: nada más apagar el ordenador "cliente" aparece en el "servidor" el cartelito de "Cable de red desconectado", y a partir de aquí toda la red se inhabilita. Desde internet explorer puedo acceder a \\WinXP, donde aparece mi carpeta compartida, pero al intentar entrar en ella dice:

Cita:
Empezado por Maravilloso Windows XP Profesional
No tiene acceso a \\winxp\sistema. Puede que no tenga permiso para utilizar este recurso de red. Póngase en contacto con el administrador de este servidor para comprobar si tiene permisos de acceso.

No es posible el acceso a la ubicación de red. Para obtener información para solucionar problemas de red, vea la Fabulosa ayuda de Windows.
Este mismo error se obtiene desde microsoft OFFICE, al escribir: \\winxp\sistema(espacio) e intentar acceder al recurso de red.


Desde mi programa, accediendo desde el "servidor" con rutas UNC el error que da es:
Cita:
Network initialization failed.
Unknown internal operating system error.
File: \\WINXP\sistema\PDOXUSRS.NET
Directory: \\WINXP\sistema\
Invalid file name.
---------------------------- 2ª PRUEBA --------------------------------
Si en el "servidor" uso el NetFileDir y DatabaseDir con rutas UNC, y los 2 ordenadores de la red están encendidos todo va de miedo, al intentar bloquear un mismo registro en ambos ordenadores, sale un messagebox programado indicando que ya está bloqueado por el usuario: nombre_usuario_de_mi_programa

Todo correcto!!!

---------------------------- 3ª PRUEBA --------------------------------
Si en el "servidor" uso el NetFileDir y DatabaseDir con rutas locales, cuando entra el "cliente" con rutas UNC, los bloqueos de registros no funcionan correctamente, es decir, me deja bloquear el mismo registro en ambos ordenadores a la vez, en este caso "peculiar", El registro queda con los datos del último usuario que grabó el registro, además da algún error físico en las tablas (missing .val de alguna tabla, corrupt index, index out of date).

Cuando digo error físico, me refiero a "Physical Data Corruption" que los mencioné en mi primer mensaje. A mí personalmente me ha dado estos:

Corrupt table/index header.
Corrupt index.
Corrupt or missing .VAL file.

BBDD corrupta, echa mano de la copia de seguiridad Caaaaatalina

(Corrupt index, puede solucionarse borrando los indices y volviendolos a crear... pero si tienes un Backup, es más cómodo tirar de él).

---------------------------- 4ª PRUEBA --------------------------------
Configurando la red Local manualmente:

- Instalación por "asistente de red" por más que quiera hacerlo a mano, Windows XP Professional se mete en medio, (estupenda carabina no??)

- Despues, Añado direcciones ip: 192.168.0.X y mascara de subred 255.255.255.0 a los dos Protocolos TCP/IP de red, donde "X" es 1 para el "servidor" y 2 para el "cliente"
Código:
Pruebas realizadas desde la consola de Winxp, ("servidor")

Ping Winxp // si funciona en todos los casos.

net view winxp //siempre funciona y muestra la carpeta compartida.

Ping 192.168.0.1 //"Host de destino inaccesible" si el otro ordenador de la red está apagado

Ping 192.168.0.1  //da valores correctos si el otro ordenador de la red está encendido
Nota: todas estas notaciones son idénticas:
Código:
\\127.0.0.1\sistema
\\winxp\sistema       el nombre del equipo en el panel de control, sistema es "winxp"
\\192.168.0.1\sistema  la direccion IP asignada en el protocolo tcp/ip es esa misma.
que pueden probarse desde el mismo internet explorer.

---------------------------- 5ª PRUEBA --------------------------------

Mapeando una unidad.

Según mis pruebas, sirve para quitarte el engorro de rutas UNC al configurar los "clientes", pero al fin y al cabo estas usando rutas UNC. No me ha quedado claro el uso de ExpandFileName, revisando esa funcion y sus relacionadas, yo hubiese usado intuitivamente ExpandUNCFilename, el cual traduce S:\tablas a \\servidor\sistema\tablas en los "clientes"; en el "servidor" el uso de rutas locales no me cuadra jejejeje.

Roman tu configuración es muy interesante, pero son demasiados parámetros para contrastar, Creación de Alias, BDE, Sessiones, Tdabase, Directorios....Que tengan encendidos los 2 ordenadores o que compren otro ordenador para tenerlo de "servidor exclusivo".

PD: Gracias por decirme que existen ExpandFileName y ExpandUNCFilename

Agradezco toda la información que me han proporcionado, sin ellas, no sabía ni por donde empezar a recalentarme las neuronas.

Espero que toda esta parrafada también le sirva a alguien más.

Saludos y a ver que nos propone el windows Loghorn (o como se llame)
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


La franja horaria es GMT +2. Ahora son las 02:50:59.


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