Pregunta

¿Cómo se establece el compromiso automático en una sesión de SQL Server?

¿Fue útil?

Solución

Puede activar la confirmación automática SOBRE estableciendo implicit_transactions OFF:

SET IMPLICIT_TRANSACTIONS OFF

Cuando el ajuste está en ON, se vuelve al modo de transacción implícita. En el modo de transacción implícita, cada cambio que haga comienza a las transacciones que usted tiene que comprometerse de forma manual.

Tal vez un ejemplo es más clara. 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

En el siguiente ejemplo se actualizará una fila, y luego se quejan de que no hay ninguna transacción para cometer:

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

Al igual que Mitch Trigo dijo, el compromiso automático es el valor predeterminado para SQL Server 2000 en adelante.

Otros consejos

Yo quería una manera más permanente y más rápido. Porque tiendo a olvidar añadir líneas adicionales antes de escribir mi actualización real / Insertar consultas.

Lo hice por el control de SET IMPLICIT_TRANSACTIONS casilla de verificación de opciones. Para navegar a Opciones Seleccione Herramientas> Opciones> ejecución de la consulta> SQL Server> ANSI en su Microsoft SQL Server Management Studio.

Sólo asegúrese de ejecutar commit o rollback después de haber terminado ejecutando sus consultas. De lo contrario, la tabla que habría ejecutar la consulta será bloqueada por los demás.

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

Ref: Autocommit Transacciones

Con SQL Server 2005 Express, lo que encontré fue que incluso con la confirmación automática , inserciones en una tabla db se cometieron sin mi realidad la emisión de una orden de confirmación desde la sesión de estudio de la gerencia. La única diferencia era que cuando de confirmación automática estaba fuera, podría hacer retroceder todas las inserciones; con * de confirmación automática , que no podía. * En realidad, yo estaba equivocado. Con el modo de confirmación automática fuera, veo los cambios sólo en la ventana de control de calidad (Analizador de consultas) a partir del cual se emitieron las órdenes. Si me pasó una nueva (Analizador de consultas) ventana de control de calidad, no veo los cambios realizados por la primera ventana (sesión), es decir, no están comprometidos! Tenía que emitir compromiso explícito o comandos de reversión de hacer cambios visibles para otras sesiones (ventanas QA) - mi mal! Las cosas están funcionando correctamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top