Transazioni

Una transazione è un oggetto che definisce un'unità logica di lavoro. La transazione è attiva fino a quando è presente un handle che fa riferimento alla transazione e viene considerato attivo se la transazione non è ancora stata sottoposta a commit o sottoposta a rollback. Se viene creata una transazione e tutti gli handle in esso sono stati chiusi prima che si verifichi un commit o un rollback, verrà eseguito il rollback della transazione.

Si consideri il caso di un client transazionale in modalità utente che crea una transazione per definire l'ambito delle operazioni, quindi esegue gli aggiornamenti in uno o più gestori risorse. Si verifica quanto segue:

  1. Il client chiama la funzione CreateTransaction per creare la transazione e riceve un handle per tale transazione come valore restituito.

    La transazione può essere aperta o ereditata da un numero qualsiasi di processi; ogni processo è quindi coinvolto nella transazione. L'errore di uno di questi processi causerà l'interruzione della transazione.

    Questa transazione potrebbe non essere ancora persistente. Solo le transazioni che hanno raggiunto lo stato preparato devono essere ripristinate in caso di errori di sistema se la transazione utilizza la registrazione presunta di interruzione.

  2. Il client deve passare una transazione in modo esplicito a Resource Manager.

  3. Il client esegue tutte le operazioni transazionali con uno o più VM, ad esempio file system transazionali.

  4. Il client chiama la funzione CommitTransaction .

  5. Il gestore risorse riceve notifiche da KTM per preparare ed eseguire il commit dei dati.

Transazioni e thread

Le transazioni non corrispondono ai thread. Più thread o processi possono far parte di una singola transazione. Al contrario, un thread può far parte di più transazioni diverse in momenti diversi.

Funzioni di transazione

Le funzioni seguenti vengono usate con le transazioni.

Funzione Descrizione
CommitTransaction Richiede il commit della transazione specificata.
CommitTransactionAsync Richiede il commit della transazione specificata.
CreateTransaction Crea un nuovo oggetto transazione.
GetTransactionInformation Restituisce le informazioni richieste sulla transazione specificata.
OpenTransaction Apre una transazione esistente.
RollbackTransaction Richiede il rollback della transazione specificata.
RollbackTransactionAsync Richiede il rollback della transazione specificata. Questa funzione restituisce in modo asincrono.
SetTransactionInformation Imposta le informazioni sulla transazione per la transazione specificata.