Supporto delle transazioni in OLE DB

Una transazione è un modo per raggruppare o raggruppare in batch una serie di aggiornamenti a un'origine dati in modo che tutti abbiano esito positivo e venga eseguito il commit in una sola volta o (se uno di essi ha esito negativo) non viene eseguito il commit e viene eseguito il rollback dell'intera transazione. Questo processo garantisce l'integrità del risultato nell'origine dati.

OLE DB supporta le transazioni con i tre metodi seguenti:

Relazione tra sessioni e transazioni

Un singolo oggetto origine dati può creare uno o più oggetti sessione, ognuno dei quali può trovarsi all'interno o all'esterno dell'ambito di una transazione in un determinato momento.

Quando una sessione non immette una transazione, tutte le operazioni eseguite all'interno di tale sessione nell'archivio dati vengono immediatamente sottoposte a commit in ogni chiamata al metodo. Questa modalità viene talvolta definita modalità autocommit o modalità implicita.

Quando una sessione entra in una transazione, tutte le operazioni eseguite all'interno di tale sessione nell'archivio dati fanno parte di tale transazione e viene eseguito il commit o l'interruzione come singola unità. Questa operazione viene talvolta definita modalità di commit manuale.

Il supporto delle transazioni è specifico del provider. Se il provider in uso supporta le transazioni, un oggetto sessione che supporta ITransaction e ITransactionLocal può immettere una transazione (non annidata). La classe CSession dei modelli OLE DB supporta queste interfacce ed è il modo consigliato per implementare il supporto delle transazioni in Visual C++.

Avvio e fine della transazione

I metodi , Commite Abort vengono chiamati StartTransactionnell'oggetto set di righe nel consumer.

La chiamata ITransactionLocal::StartTransaction avvia una nuova transazione locale. Quando si avvia la transazione, le modifiche richieste dalle operazioni successive non vengono applicate all'archivio dati fino a quando non si esegue il commit della transazione.

Chiamare ITransaction::Commit o ITransaction::Abort terminare la transazione. Commit fa sì che tutte le modifiche all'interno dell'ambito della transazione vengano applicate all'archivio dati. Abort determina l'annullamento di tutte le modifiche all'interno dell'ambito della transazione e l'archivio dati viene lasciato nello stato precedente all'avvio della transazione.

Transazioni annidate

Una transazione nidificata si verifica quando si avvia una nuova transazione locale quando esiste già una transazione attiva nella sessione. La nuova transazione viene avviata come transazione nidificata sotto la transazione corrente. Se il provider non supporta le transazioni nidificate, la chiamata StartTransaction quando è già presente una transazione attiva nella sessione restituisce XACT_E_XTIONEXISTS.

Transazioni distribuite

Una transazione distribuita è una transazione che aggiorna i dati distribuiti; ovvero dati su più di un sistema di computer in rete. Se si desidera supportare le transazioni in un sistema distribuito, è consigliabile usare .NET Framework anziché il supporto delle transazioni OLE DB.

Vedi anche

Uso delle funzioni di accesso