2012-02-29 10 views
13

Estoy buscando una forma de especificar un nivel de transacción personalizado en Delphi's DBX usando el controlador firebird. Estoy usando Delphi XE.Nivel de transacción personalizado en Delphi DBX firebird

En el editor de parámetros del componente TSQLConnection puedo establecer varios valores de TransIsolation y estoy usando el valor predeterminado ReadCommited. La propiedad WaitOnLocks se establece en True. espero que este utiliza la siguiente configuración transacción pájaro de fuego, 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] en 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 de datos múltiples de usuarios y creo que es porque una transacción está esperando en 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.

+1

Documentación siguiente 'Además, TSQLConnection le permite especificar niveles de aislamiento personalizados específicos de la base de datos. Los niveles de aislamiento personalizados están definidos por el controlador dbExpress. Consulte la documentación del controlador para obtener detalles. – JustMe

+0

¿Tiene en cuenta comprar un controlador interbase documentado? O use más salution nativo como IBDAC u objetos IB (+ rendimiento + compatibilidad + soporte)? – JustMe

Respuesta

0

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!

Cuestiones relacionadas