Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-04-2008
muli muli is offline
Miembro
 
Registrado: jun 2003
Ubicación: A Coruña
Posts: 194
Poder: 21
muli Va por buen camino
Muchas transacciones al mismo tiempo error

Estoy desarrollando un sistema de control de trabajos en una carpinteria, y todo funcionaba bien hasta que se puso un sistema de terminales ligeros que acceden a un servidor a traves de terminal server (thinstation), y claro en los terminales solo se ejecuta la aplicación ya al momento de iniciar, y cuando inician todas me salta el error del abrazo mortal en las transacciones, y eso que solo abro la transaccion cuando se inicia la aplicación, no hago ninguna consulta ni nada por el estilo.
Donde puede estar el error.
En firebird 1.5 con vista?
En el tipo de transaccion (read comminted nowait)?
En iniciar todos los terminales al mismo tiempo?
Le pondré que ejecute cada terminal en una carpeta distinta y atacando a la misma BD claro?
__________________
SI UN PROBLEMA TIENE SOLUCION, YA NO ES UN PROBLEMA, Y SI NO LA TIENE PARA QUE PREOCUPARSE.
Responder Con Cita
  #2  
Antiguo 05-04-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
En un entorno Cliente servidor dejas que los clientes controlen las transacciones?

Eso es un grave error de diseño. Considera hacer uso de Sps.

Suerte
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #3  
Antiguo 05-04-2008
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por poliburro Ver Mensaje
En un entorno Cliente servidor dejas que los clientes controlen las transacciones?

Eso es un grave error de diseño. Considera hacer uso de Sps.

Suerte

Eso mismo pensé. Puede que el programa no estuviese ideado para trabajar cliente/servidor.
Responder Con Cita
  #4  
Antiguo 07-04-2008
muli muli is offline
Miembro
 
Registrado: jun 2003
Ubicación: A Coruña
Posts: 194
Poder: 21
muli Va por buen camino
Hombre, los clientes siempre tienen que hacer uso de transacciones, pues necesitan traer datos, tanto en un entorno c/s como en los otros, o acaso tu en una gestión c/s no haces uso de transacciones, haces todo con procedimientos almacenados?, permiteme que dude que se puede realizar la gran mayoria de las funciones de una gestión con procedimientos almacenados, y cuando realices algún cambio en la programación, arriesgarte a tocar la BD por un cambio que no sea significativo.
De todas formas y como en la variedad está el gusto, cada uno ataca de la forma que considera sus problemática y lo que planteé nunca me ha pasado con otros S.O. pues tengo entornos de gestión c/s en los cuales son más puestos y nunca me dieron abrazos mortales.

Sin más saluditos a todos.
__________________
SI UN PROBLEMA TIENE SOLUCION, YA NO ES UN PROBLEMA, Y SI NO LA TIENE PARA QUE PREOCUPARSE.
Responder Con Cita
  #5  
Antiguo 07-04-2008
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Lo has seguido paso a paso para ver exactamente dónde está el problema?
Responder Con Cita
  #6  
Antiguo 07-04-2008
Avatar de brunoweb
brunoweb brunoweb is offline
Registrado
 
Registrado: jun 2006
Ubicación: Buenos Aires
Posts: 2
Poder: 0
brunoweb Va por buen camino
¿Qué significa que "solo abres la transacción cuando se inicia la aplicación"?
Tené en cuenta que las transacciones debes cerrarlas tan pronto como puedas desde que fueron abiertas. Estando en un ámbito de trabajo monousuario puedes trabajar tranquilo, como lo venías haciendo, pero cuando los accesos son múltiples a la base de datos, se hace imperioso que la duración de las transacciones sea de apenas segundos.

Si este es el problema que tenés, abrir la transacción al iniciar y en forma automática sin ser necesaria y esperando que el usuario la cierre, entonces es muy probable que se dén estos infames deadlocks. Las soluciones o paleativos son muchos y variados.

Tendrías que dar algunos datos más, por ejemplo, con qué componente de acceso a datos estás trabajando. Yo tuve el problema de los deadlocks y lo resolví trabajando sobre las propiedades del IB_Transaction de IBObjects. Leyendo por ahí y allá, encontré que la mejor configuración de este componente es:

- Isolation=tiCommited
- RecVersion=False
- LockWait=True
- ServeAutoCommit=True

Esta última propiedad solo se puede establecer en True si la aplicación está accediendo desde otra pc en la red, ya que si te encuentras en la misma pc donde está la base de datos, el componente arroja error automáticamente.

También fíjate mucho en los triggers que si realizas una inserción/modificación simultánea desde dos terminales que dispare un trigger que toque la misma tabla y el mismo registro (la misma clave primaria), como puede ser un trigger de actualización de stock, el deadlock solo puede evitarse con la combinación de propiedades antes mencionada.

Bueno, espero haber ayudado, sino guíanos un poco más porque quizás entendí mal el problema.


Saludos.
Responder Con Cita
  #7  
Antiguo 09-04-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Cita:
Empezado por muli Ver Mensaje
Hombre, los clientes siempre tienen que hacer uso de transacciones, pues necesitan traer datos, tanto en un entorno c/s como en los otros, o acaso tu en una gestión c/s no haces uso de transacciones, haces todo con procedimientos almacenados?, permiteme que dude que se puede realizar la gran mayoria de las funciones de una gestión con procedimientos almacenados, y cuando realices algún cambio en la programación, arriesgarte a tocar la BD por un cambio que no sea significativo.
De todas formas y como en la variedad está el gusto, cada uno ataca de la forma que considera sus problemática y lo que planteé nunca me ha pasado con otros S.O. pues tengo entornos de gestión c/s en los cuales son más puestos y nunca me dieron abrazos mortales.

Sin más saluditos a todos.
Opinión personal: Tu punto de vista sobre la transaccionalidad es errónea por que los cliéntes no debén ser los responsables de esta sino al contrario, el servidor debe ser el responsable de controlar las transacciones. Imagina una aplicación de 3 capas con SOAP. Los clientes deben controlar las transacciones?, por supuesto que NO, es a través de los procedimientos almacenados que las transacciones son controladas.


Con respecto a tu duda, puedo asegurarte que es posible realizar sistemas grandes utilizando unicamente procedimientos almacenados. .

Suerte
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #8  
Antiguo 09-04-2008
muli muli is offline
Miembro
 
Registrado: jun 2003
Ubicación: A Coruña
Posts: 194
Poder: 21
muli Va por buen camino
Lo que pasa que es se está desviando el tema hacia las aplicaciones en tres capas, pero mi duda inicial es con una aplicación en dos capas y ejecutandose en el mismo equipo, pues los terminales ligeros abren sesiones de terminal server y todo se ejecuta en el mismo equipo, de todas formas me parece que ya he solucionado el problema cerrando las transacciones en el momento justo.

Un saludo a todos.
__________________
SI UN PROBLEMA TIENE SOLUCION, YA NO ES UN PROBLEMA, Y SI NO LA TIENE PARA QUE PREOCUPARSE.
Responder Con Cita
  #9  
Antiguo 10-04-2008
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Cita:
Empezado por muli Ver Mensaje
Lo que pasa que es se está desviando el tema hacia las aplicaciones en tres capas, pero mi duda inicial es con una aplicación en dos capas y ejecutandose en el mismo equipo, pues los terminales ligeros abren sesiones de terminal server y todo se ejecuta en el mismo equipo, de todas formas me parece que ya he solucionado el problema cerrando las transacciones en el momento justo.

Un saludo a todos.

Lo mismo aplica a las dos capas, de hecho tengo un ambiente similar en el trabajo, usuarios conectados a través de términal services que ejecutan aplicaciones en dos o tres capas, y toda la parte transaccional se encuentra en la base de datos.
__________________
Conoce mi blog http://www.edgartec.com

Última edición por poliburro fecha: 10-04-2008 a las 01:29:27. Razón: ortografía
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
update a dos tablas relacionadas al mismo tiempo thelibmx MS SQL Server 2 14-11-2007 12:08:28
Dos formularios al mismo tiempo nostrajara Gráficos 2 31-10-2007 17:13:09
Reporte de dos tablas ai mismo tiempo Jheysson13 Varios 2 11-11-2006 23:52:24
Dos Formularios al mismo tiempo lucasarts_18 Varios 5 19-04-2005 03:46:05


La franja horaria es GMT +2. Ahora son las 12:37:02.


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