¿Cómo configura el autocommit en una sesión de SQL Server?

¿Cómo configura el autocommit en una sesión de SQL Server?

Puede activar el autocommit configurando implicit_transactions OFF:

SET IMPLICIT_TRANSACTIONS OFF 

Cuando la configuración está activada, vuelve al modo de transacción implícita. En el modo de transacción implícita, cada cambio que realice iniciará transacciones que deberá realizar manualmente.

Tal vez un ejemplo sea más claro. Esto escribirá un cambio en la base de datos:

 SET IMPLICIT_TRANSACTIONS ON UPDATE MyTable SET MyField = 1 WHERE MyId = 1 COMMIT TRANSACTION 

Esto no escribirá un cambio en la base de datos:

 SET IMPLICIT_TRANSACTIONS ON UPDATE MyTable SET MyField = 1 WHERE MyId = 1 ROLLBACK TRANSACTION 

El siguiente ejemplo actualizará una fila y luego se quejará de que no hay ninguna transacción que comprometer:

 SET IMPLICIT_TRANSACTIONS OFF UPDATE MyTable SET MyField = 1 WHERE MyId = 1 ROLLBACK TRANSACTION 

Como dijo Mitch Wheat, la confirmación automática es la predeterminada para Sql Server 2000 y posteriores.

Yo quería una manera más permanente y más rápida. Debido a que tiendo a olvidar agregar líneas adicionales antes de escribir mis consultas actuales de actualización / inserción.

Lo hice marcando la checkbox SET IMPLICIT_TRANSACTIONS en Opciones. Para navegar a Opciones, seleccione Herramientas> Opciones> Ejecución de consulta> Servidor SQL> ANSI en su Microsoft SQL Server Management Studio.

Solo asegúrese de ejecutar commit o rollback después de que termine de ejecutar sus consultas. De lo contrario, la tabla que habría ejecutado la consulta se bloqueará para los demás.

La confirmación automática es el modo de administración de transacciones predeterminado de SQL Server. (SQL 2000 en adelante)

Ref .: Transacciones de autocompromiso

Con SQLServer 2005 Express, lo que encontré fue que incluso con el autocommit desactivado , las inserciones en una tabla Db se confirmaron sin que realmente emitiera un comando de confirmación desde la sesión de Management Studio. La única diferencia era que, cuando el autocommit estaba desactivado, podía deshacer todas las inserciones; con * autocommit on , no pude. * En realidad, estaba equivocado. Con el modo de confirmación automática desactivado, veo los cambios solo en la ventana QA (Query Analyzer) desde la que se emitieron los comandos. Si abrí una nueva ventana de QA (Analizador de consultas), no veo los cambios realizados por la primera ventana (sesión), es decir, ¡NO están comprometidos! Tuve que emitir comandos explícitos de compromiso o retrotracción para que los cambios estuvieran visibles para otras sesiones (ventanas de control de calidad). ¡Qué mal! Las cosas están funcionando correctamente.