Compartir a través de


Transacciones explícitas

Una transacción explícita es aquella en que se define explícitamente el inicio y el final de la transacción.

Las aplicaciones de DB-Library y las scripts Transact-SQL utilizan las instrucciones BEGIN TRANSACTION, COMMIT TRANSACTION, COMMIT WORK, ROLLBACK TRANSACTION o ROLLBACK WORK de Transact-SQL para definir transacciones explícitas.

  • BEGIN TRANSACTION
    Marca el punto de inicio de una transacción explícita para una conexión.

  • COMMIT TRANSACTION o COMMIT WORK
    Se utiliza para finalizar una transacción correctamente si no hubo errores. Todas las modificaciones de datos realizadas en la transacción se convierten en parte permanente de la base de datos. Se liberan los recursos ocupados por la transacción.

  • ROLLBACK TRANSACTION o ROLLBACK WORK
    Se utiliza para eliminar una transacción en la que se encontraron errores. Todos los datos modificados por la transacción vuelven al estado en el que estaban al inicio de la transacción. Se liberan los recursos ocupados por la transacción.

También puede utilizar transacciones explícitas en OLE DB. Llame al método ITransactionLocal::StartTransaction para iniciar una transacción. Llame al método ITransaction::Commit o ITransaction::Abort con fRetaining establecido en FALSE para finalizar la transacción sin iniciar otra automáticamente.

En ADO, utilice el método BeginTrans en un objeto Connection para iniciar una transacción explícita. Para finalizar la transacción, llame a los métodos CommitTrans o RollbackTrans del objeto Connection.

En el proveedor administrado de SqlCliente de ADO.NET, utilice el método BeginTransaction en un objeto SqlConnection para iniciar una transacción explícita. Para finalizar la transacción, llame a los métodos Commit() o Rollback() del objeto SqlTransaction.

La API de ODBC no acepta transacciones explícitas, sólo acepta transacciones de confirmación automática y transacciones implícitas.

El modo de transacciones explícitas se mantiene solamente durante la transacción. Cuando la transacción termina, la conexión vuelve al modo de transacción en que estaba antes de iniciar la transacción explícita, es decir, el modo implícito o el modo de confirmación automática.

Nota

En una sesión de conjuntos de resultados activos múltiples (MARS), una transacción explícita iniciada con la instrucción Transact-SQL BEGIN TRANSACTION se convierte en una transacción de lote. Si la transacción de lote no se confirma ni se revierte cuando se termina el lote, queda revertida por SQL Server automáticamente. Para obtener más información, vea Controlar transacciones (motor de base de datos) y Instrucciones de transacción (Transact-SQL).