PDA

Ver la Versión Completa : Paradox en Red.. (sigo castigado)


Luis_Alberto
16-12-2003, 21:28:05
...por mi ignorancia.
Ya había posteado un problema antes en el mismo sentido, y algo solucioné, pero continúo con los escándalos de fondo, o sea, aquellos que no permiten un correcto desempeño del sistema.
Paso al detalle.
La aplicación está generada en Delphi 5, tablas Paradox 7, algunas bastante grandes (tres de ellas sobrepasan los 250.000 registros, y el tamaño del directorio Tablas, incluyendo los índices, es de unos 200 Mb).
La Red (¡Ja!) se compone de 6 equipos con Windows 98, uno de los cuales (PIII 900 MHz con 128 RAM y HD 40 Gb), hace las veces de Servidor no dedicado y puesto de trabajo a la vez.
El BDE está instalado y configurado igual en todos los equipos, y su configuración sigue en todos (incluso en el servidor) las normas UNC

Describo lo más detalladamente la configuración y el problema, y consulto a continuación:

Al inicializar la aplicación, sólamente creo dos de los forms (el Main y un Datamod).

En el evento OnCreate del Datamodule:

Session.NetFileDir:='\\servidor1\sistema\net';
Session.PrivateDir := 'c:\Temp';
Session.Active:=true;

En Configuración de Databases del BDE:

MiAlias Type: STANDARD
Default Driver: PARADOX
Enable BCD: FALSE
Path: \\servidor1\sistema\tablas

En Configuración de Drivers - Native - PARADOX:

\\Servidor1\sistema\net

En Configuración de System - INIT pasa lo siguiente:

Si LOCAL SHARE = TRUE me crea los ficheros PDOXUSRS.LCK
y PARADOX.LCK tanto en el PrivateDir (C:\TEMP) como en
el directorio donde están las tablas.

Si LOCAL SHARE = FALSE me crea los ficheros PDOXUSRS.LCK
y PARADOX.LCK sólo en el directorio donde están las tablas.

El PDOXUSRS.NET se crea y gestiona correctamente en el NetFileDir indicado.

Todas las tablas del Datamodule apuntan en su DatabaseName al alias MiAlias definido en la BDE, y al momento de inicializarse el DataMod están todas inactivas, entrando en operatividad sólo en caso de ser accedido el sistema por el Usuario y Pass correctos.

Como podrán comprender, mi problema pasa por el hecho que los diferentes equipos que acceden a la aplicación crean o intentan crear siempre los ficheros .LCK en el directorio de las tablas, en el Servidor, lo cual me provoca frecuentes inconsistencias de datos e índices, más que nada el fatídico 'Index is out of date', y eventualmente he perdido registros. Ello sucede sólamente cuando se modifican datos, y no cuando sólo se consultan.

Cada vez que he tenido problemas, e intentando solucionarlos (gracias a la Cara Oculta...), eliminé índices, .NET, .LCK y otros, y reinicié todo prácticamente de cero.

Las consultas son : 1- ¿Es correcto que cada equipo intente crear/acceder a los .LCK en el directorio
donde están las Tablas?. Creo que no, por lo que le he leído a un tal Ian
Marteens, un tipo que parece que sabe algo....(ji, ji...)
2- ¿Dónde está mi error ? (que lo hay).
3- ¿Cómo lo soluciono? (que debe existir un arreglo ¿No?)

Agradezco desde ya vuestra ayuda.

marcoszorrilla
17-12-2003, 08:12:47
Supongo que tendrás un Tsession al cual apuntan todas las tablas, además se recomienda no tener el ejecutable en el mismo directorio que las tablas.

Un Saludo.

hecjona
17-12-2003, 17:39:58
No esta de mas el uso de FlushBuffers despues de cada post, para que todo se actualize bien.
Ahora si no encuentras el problema real (que puede ser tambien de hardware), puedes crear un proceso que regenere los indices cuando recien se encienda el servidor, este tipo de parche aveces te da un poco mas de tiempo antes de que te marque un "index out of date".

AdrianD
13-01-2004, 22:26:00
Dos cosas que me ayudaron mucho, al punto de no tener problemas ni siquiera con un corte de electricidad:

1.- Dices que trabajas con windows 98, entonces deberias desactivar la cache de escritura en segundo plano.
Esto lo haces desde el panel de control->sistema->rendimiento->sistema de archivos->solución de problemas.

2.-en el evento afterpost de cada tabla hacer: DbiSaveChanges(Tabla.Handle);

con esta dos ayuditas mas lo que te sugirio marcoszorrilla deberia ir de maravillas.

A pesar de esto, una vez tube un problema similar al tuyo y despues de muchos quebraderos de cabeza descubrimos el problema, las pc no recibian la energia necesaria (220v en Argentina)