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)
-   -   Transacción interrumpida por reset (https://www.clubdelphi.com/foros/showthread.php?t=20604)

Kafu 20-04-2005 12:49:53

Transacción interrumpida por reset
 
Hola a todos. Tengo un pequeño dilema.
Tengo una aplicación cliente-servidor contra una BD firebird 1.5 y utilizo los componentes ibx.
Por ciertas razones, debo proteger un proceso para que no haya más de un usuario realizándolo, y ésto es lo que se me había ocurrido, después de leer aquí varios posts acerca del uso de las transacciones:

Para saber que hay alguien dentro del proceso, lanzo un update sobre una tabla abriendo la transaccion correspondiente pero sin cerrarla hasta que se sale del proceso. De esta manera el segundo usuario/terminal que intente entrar obtendrá una excepción de lock conflict al intentar realizar ese mismo update.
Hasta ahí bien. Pero el problema es que si el primer usuario resetea el equipo esa transacción se queda colgada, y hasta que no reinicio el motor firebird en el servidor no se libera.
Querría saber si alguien sabe de alguna alternativa o cómo liberar esa transacción desde un puesto que no sea el mismo que se reseteó, si ésto es posible. Gracias en cualquier caso por vuestra atención. Un saludo,

Kafú--

Rufus 20-04-2005 13:48:20

Cita:

Empezado por Kafu
Pero el problema es que si el primer usuario resetea el equipo esa transacción se queda colgada, y hasta que no reinicio el motor firebird en el servidor no se libera.

¿Que clase de reset hacen los clientes, un reset a lo bestia (hard reset)? Por que supongo que si hacen un reset "normal" desde el sistema operativo, ya en tu aplicacion te habras asegurado de que las transacciones queden terminadas justo antes de cerrar.

Si esto sucede aparte de reiniciar el servidor de base de datos otra opcion seria hacer una limpieza manual con gfix.

Kafu 20-04-2005 14:26:31

Gracias por la respuesta.
Me refiero a un reset a pelo, dándole al botón o en caso de un corte de luz. No sé si eso es un hard reset, la verdad. No conozco la forma de cerrar las transacciones en este caso. El gfix no me sirve como solución, precisamente lo que quiero evitar es que el usuario tenga que liberar algo, ya sea una marca en un registro, una transaccion, etc. Pero no veo cómo. Un saludo,
F.T.G.


La franja horaria es GMT +2. Ahora son las 15:19:29.

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