tsql - tipos - transacciones sql commit
Nivel de transacción personalizado en Delphi DBX firebird (1)
Estoy buscando una manera de especificar un nivel de transacción personalizado en Delphi''s DBX utilizando el controlador Firebird. Estoy usando Delphi XE.
En el editor de parámetros del componente TSQLConnection puedo establecer varios valores de Transisolation y estoy usando el valor predeterminado de ReadCommited
. La propiedad WaitOnLocks
está establecida en True
. Espero que esto use la siguiente configuración de transacción de Firebird, pero no estoy seguro:
READ WRITE + WAIT + SNAPSHOT
(ver http://www.firebirdsql.org/refdocs/langrefupd20-set-trans.html )
Me gustaría utilizar LOCK TIMEOUT [seconds]
lugar de WAIT
. Pero no puedo encontrar cómo o dónde especificar esto. He buscado en los archivos fuente DBX y hay algún código para niveles de transacción personalizados (busque xilCUSTOM
) pero parece inacabado / sin usar.
La razón de esto es que a veces experimentamos un punto muerto en nuestra aplicación multitarea de datos y creo que es porque una transacción está esperando otra transacción (posiblemente muerta). Preferimos que la transacción se rompa después de un par de segundos antes de que todo el cliente cuelgue indefinidamente.
Solo mis pocos centavos: en mi experiencia, los objetos de IBO mencionados por JustME son una biblioteca muy decente. En otro punto, supongo que ha intentado identificar el escenario que lo lleva a su punto muerto. ¿Es una situación muy impredecible? Solo me pregunto si tienes otras situaciones en las que WAIT realmente permite que la aplicación avance, lo que se vería afectado negativamente si usas un tiempo de espera de bloqueo. Volviendo a mi primer comentario: con Firebird generalmente es mejor usar una biblioteca dedicada, eso es. Espero que te clasifiquen!