Condividi tramite


Transazioni esplicite

Per transazione esplicita si intende una transazione di cui vengono definiti in modo esplicito l'inizio e la fine.

Per definire transazioni esplicite, nelle applicazioni DB-Library e negli script Transact-SQL viene utilizzata l'istruzione Transact-SQL BEGIN TRANSACTION, COMMIT TRANSACTION, COMMIT WORK, ROLLBACK TRANSACTION o ROLLBACK WORK.

  • BEGIN TRANSACTION
    Contrassegna il punto iniziale di una transazione esplicita per una connessione.

  • COMMIT TRANSACTION o COMMIT WORK
    Consente di completare una transazione se non si sono verificati errori. Tutte le modifiche dei dati eseguite nella transazione vengono integrate in modo permanente nel database e le risorse utilizzate dalla transazione vengono liberate.

  • ROLLBACK TRANSACTION o ROLLBACK WORK
    Consente di annullare una transazione in cui si sono verificati errori. Per tutti i dati modificati dalla transazione viene ripristinato lo stato precedente l'inizio della transazione e le risorse utilizzate dalla transazione vengono liberate.

Le transazioni esplicite sono utilizzabili anche in OLE DB. Per avviare una transazione, chiamare il metodo ITransactionLocal::StartTransaction. Per terminare la transazione senza avviarne automaticamente un'altra, chiamare il metodo ITransaction::Commit o ITransaction::Abort con l'opzione fRetaining impostata su FALSE.

Per avviare una transazione esplicita in ADO, utilizzare il metodo BeginTrans su un oggetto Connection. Per terminare la transazione, chiamare il metodo CommitTrans or RollbackTrans dell'oggetto Connection.

Nel provider di gestione ADO.NET SqlClient utilizzare il metodo BeginTransaction in un oggetto SqlConnection per avviare una transazione esplicita. Per terminare la transazione, chiamare i metodi Commit() o Rollback() sull'oggetto SqlTransaction.

L'API ODBC non supporta le transazioni esplicite, ma solo le transazioni implicite e con autocommit.

La modalità transazione esplicita resta attivata solo per la durata della transazione. Al termine della transazione, viene ripristinata la modalità precedente all'avvio della transazione esplicita, ovvero la modalità transazione implicita o autocommit.

Nota

In una sessione MARS una transazione esplicita avviata con l'istruzione Transact-SQL BEGIN TRANSACTION diventa una transazione con ambito batch. Se per la transazione con ambito batch non viene eseguito il commit o il rollback al completamento del batch, SQL Server esegue automaticamente il rollback della transazione. Per ulteriori informazioni, vedere Controllo delle transazioni (Motore di database) e Istruzioni della transazione (Transact-SQL).