Error en ejecución de sentencias SQL

Aquél que diga que su software está libre de errores, o es un inconsciente o un mentiroso. Desde luego, no somos tan descarados como para decir eso de Criterium CyP.
En ocasiones, está en nuestras manos solucionarlos, en otras, depende de terceros. Pero siempre tratamos de arreglarlos o, al menos, buscar una alternativa para evitarlo o minimizar sus efectos.
Si embargo, hay algún bug que se resiste mas de lo debido. Ese es el caso de uno que acabamos de resolver. Ha estado siempre ahí, aunque nuestro conocimiento del mismo es mas reciente. Cuando ejecutábamos sentencias SQL mediante transacciones independientes se daba un error al hacerlo dos veces sin cerrar tras la primera el formulario. Es un error muy raro pero potencialmente muy dañino ya que por un mal manejo de las excepciones dejaba la conexión a la base de datos en medio de una transacción.
En varias ocasiones hemos tratado de solucionarlo. Pero, pensando que era debido a un error en el manejo de las transacciones, todos los intentos de solución han fracasado. Hoy, con algo mas de frescura, hemos intentado por otro lado y finalmente hemos dado con la solución. En realidad el problema no estaba en las transacciones sino en el estado "Prepared" de los stored procedures que eran ejecutamos mediante ExecSQL a través de los TSQLDataSet. Al final simplemente se trataba de comprobar la propiedad "prepared"y ponerla a False en caso de que estuviese en True.

Esto a la mayoría le sonará a chino, pero en resumen, después de todo era era una chorrada, pero no se pueden imaginar la tranquilidad que tenemos ahora. Un maldito bug que finalmente ha caído y que deja un poquito mejor nuestro software.

Producto: 
Tags: