Me estoy conectando a un servidor SQL sin utilizar autocommit. Si todo tiene éxito, llamo commit. De lo contrario, simplemente salgo. ¿Tengo que llamar de manera explícita la reversión, o se revertirá automáticamente cuando cerremos la conexión sin comprometer?¿Debo devolver la devolución si nunca me comprometo?
En caso de que importe, estoy ejecutando los comandos SQL desde el proc sql en SAS.
ACTUALIZACIÓN: Parece que SAS puede ejecutar la confirmación automáticamente al final del bloque proc sql si no se llama a la reversión. Entonces, en este caso, la reversión sería más que una buena práctica; sería necesario
Actualización final: Terminamos cambiando a un nuevo sistema, que me parece que se comporta de manera opuesta a la anterior. Al finalizar la transacción sin especificar el compromiso o el retroceso, se retrotraerá. Por lo tanto, los consejos que figuran a continuación son definitivamente correctos: siempre cometer o deshacer de forma explícita.
¿Qué efecto tendría la agrupación de conexiones en esto? –
Si gestiona sus transacciones teniendo en cuenta las mejores prácticas, no debería preocuparse, @JoeStefanelli :-) Lo que quiero decir - 1.) dentro y fuera de su transacción lo más rápido que pueda - solo haga lo que sea necesario dentro de ella para mantener la huella e impacto pequeños y 2.) Manejo y limpieza de errores adecuados para confirmar cuando se hace correctamente y deshacer cuando no. No aprobaré un cambio en un entorno que administro si viola estos dos principios básicos. Entonces, la agrupación de conexiones no tendrá efecto allí. –
De acuerdo en que es mejor hacer su propio compromiso explícito cuando las cosas se hacen bien. Mi pregunta fue dirigida más a la parte "*** *** *** roll back on connection" de su respuesta. –