|
Hola.
Un deadlock no se ocasiona unicamente por tener una aplicacion con dos procesos que entren en conflicto (2 TDatabase con transacciones abiertas). Sinó que también pueden entrar en conflicto dos usuarios en dos estaciones distintas (si los dos modifican el mismo registro dentro de sus respectivas transacciones, se puede ocasionar el abrazo mortal).
Las transacciones de SQL Server (a diferencia de las de Interbase) no están diseñadas para permanecer abiertas mientras el usuario modifica los datos. Puesto que mientras la transacción está abierta, se generan bloqueos sobre los datos hasta que no finalize la transacción.
Estos sistemas están diseñados para que las transacciones duren el minimo tiempo posible. Es decir cuando el usuario le da a guardar, es cuando abres la transacción, salvas los datos y finalizas la transacción.
Por cierto, el BDE está obsoleto, Borland no va a sacar nuevas versiones, y por lo tanto no va a actualizarlo a nuevas versiones de las bases de datos. Deberiais pensar en cambiar a ADO o dbExpress (solo Delphi 7), que són los componentes recomendados para acceder a SQL Server.
Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
|