FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Migracion DBE a FIREDAC
Hola chicos con el gusto de saludarles antes que nada este foro es buenisimo.
Me ha sacado de muchas dudas. Recientemente he migrado una version de Delphi 7 a XE4 con ello migre al componente de FIREDAC para la conexion a la base de datos en SQL sin embargo me sucede lo siguiente Si un usuario a esta utilizando una tabla por ejemplo OficiosPagoDetalle esta insertando y/o eliminando registros y otro usuario b intenta realizar un insert en la misma tabla se me genera el siguiente problema la accion b no puede terminar hasta que a termine lo cual me parece totalmente ilogico ami connection ya le puse la propiedad xiDirtyRead, no se que otra propiedad me haga falta configurar les agradeceria su apoyo ya que me esta generando muchos problemas. Gracias |
#2
|
||||
|
||||
Esmeralda Ramos,
¡Bienvenida al Club Delphi! Te sugiero revisar la Guía de estilo de los foros, recomendada a todos los nuevos ingresos al Club Delphi. ¡Gracias por tu cooperación! Saludos, Nelson. |
#3
|
||||
|
||||
Hola Esmeralda.
Intenta usar el nivel de aislamiento (propiedad Isolation) xiReadCommitted, en lugar de xiDirtyRead. Aquí puedes ver el significado de las distintas opciones: http://docwiki.embarcadero.com/Libra...ions.Isolation Por cierto, mencionas que usas un motor SQL, enhorabuena. Pero ¿es Firebird, Oracle, MS SQL Server...? El primero de ellos es uno de los más recomendables para trabajar con Delphi y muy bueno en general. Por otro lado, toma muy en cuenta la recomendación de Nelson. Saludos. |
#4
|
|||
|
|||
Nelson gracias por el aporte.
Actualmente utilizo sql server 2005. No he estudiado Firebird pero me pondré a estudiar el tema. Voy a intentar con propiedad Isolation xiReadCommitted y liberar versión del sistema. Mañana platico cuales fueron los resultados. Realmente me intriga el tema por que no me habia sucedido y además me genera bloqueos en el sistema. |
#5
|
|||
|
|||
Este es el tipo de bloqueo que se me presentan en el sistema con versión firedac lo que no sucedia con el bde.
|
#6
|
||||
|
||||
La imagen es muy chica y no se ve nada :P
Inicias transacciones y las cerras debidamente? Podrias mostrar la parte en que abris y cerras las transacciones? Lo digo porque un compañero tenia un "problema" similar al tuyo y decia que todo era una "m..." y hacia algo como esto
Una transaccion de insercion o borrado de registro deberia llevar unos cuantos milisegundos, a no ser que dispares millones de triggers, no deberia pasarte lo de A bloquea a B Pero ahora en el codigo que yo puse antes, el tipo iniciaba la transaccion con un boton, y la cerraba con otro. Que pasa si tocan el button1 y se van a tomar su cafecito? |
#7
|
|||
|
|||
Si perdon adjunto la imagen en un .zip, cambie insolation a xiReadCommitted pero esta mañana me presento el mismo problema.
Lo que note es que Cuando un usuario a esta modificando una Orden de Pago se realizan una serie de select para que puedan elegir los datos por ejemplo el tipo de impuesto. Y si en ese mismo instante otro usuario b esta intentando eliminar un registro de una orden de pago es bloqueado por el usuario "a" hasta que este termina. las transacciones las realizo de la siguiente manera y estan en un mismo evento en el boton aceptar: Esta falla se presento desde que cambie el engine por firedac. Muchas gracias por la ayuda Última edición por nlsgarcia fecha: 11-03-2015 a las 17:27:31. Razón: Sintaxis Delphi |
#8
|
|||
|
|||
Perdonen aqui esta el .zip
Una disculpa |
#9
|
|||
|
|||
Buena tarde.
He estado realizando pruebas y finalmente encontre lo que sucede sin embargo no he podido darle solución. Sucede que si un usuario deja de usar la aplicación, la deja abierta y enseguida deja de usar totalmente el equipo de computo durante un tiempo que oscila entre los 5 minutos y 30 minutos comienzan los bloqueos hasta que este usuario que dejo de usar el equipo de computo regresa al mismo y cierra la aplicación los demás de desbloquean. Implemente un Timmer para cerrar la aplicación si dejan de usarlo mas 5 minutos pero no ha funcionado en ciertas maquinas no funciona y los bloqueos siguen Puse 30000 por que no funcionaba con los 300000 que en teoria le corresponden al timmer. Agradecere su apoyo. Nuevamente GRacias Última edición por nlsgarcia fecha: 07-04-2015 a las 01:07:43. Razón: Sintaxis Delphi |
#10
|
||||
|
||||
Eso que quieres hacer es un "Hack", es decir, "soluciona" tu problema pero no atacas la raiz del problema
La unica forma que yo conozca que haya bloqueos en la base de datos es alguna transaccion que este abierta y no se haya cerrado Yo tambien utilizo SQL Server 2005 y jamas me paso algo asi. El unico caso que vi era un sistema que habia hecho un amigo en el cual manejaba los ciclos de apertura/cierre de transacciones mediante eventos controlados por el usuario, por ejemplo cuando cargaba una factura, al iniciar el form de carga de factura iniciaba una transaccion. Si este se iba y dejaba el sistema ahi, estaban todos bloqueados hasta que vuelva de tomar su cafe
Esta es la connection string que utilizo en ADO para conectar a SQL Server 2005 desde Delphi 2010. Tambien funciona para SQL Server 2008 R2 sin problemas No habra alguna transaccion explicita que se haya iniciado sin que te des cuenta? Prueba a poner un valor menor al que tengas en la propiedades CommandTimeout y ConnectionTimeout de la ADOConnection |
#11
|
|||
|
|||
AgustinOrtu muchas gracias por la ayuda como bien decias por la desesperación solo lo solucione temporalmente y me puse seriamente a pensar en tus post.He debugueado el codigo pasa por paso he tardado mucho tiempo pero tenías razón por ahí esta un transaction abierto y jamas se cerraba.
Yo lo he cerrado y los bloqueos han desaparecido. Agradezco mucho la ayuda. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Uso de Firedac | jafera | Conexión con bases de datos | 2 | 12-11-2014 12:46:25 |
Problema con FireDac | darkamerico | Conexión con bases de datos | 2 | 04-11-2014 14:05:16 |
Migracion BDE a FireDac | rodker | Varios | 3 | 23-07-2014 20:55:17 |
FireDac y Access | glsaavedra | Conexión con bases de datos | 2 | 27-05-2014 23:09:15 |
Firedac | Aldo | Conexión con bases de datos | 2 | 16-12-2013 22:26:07 |
|