Condividi tramite


Funzione JetCommitTransaction

Si applica a: Windows | Windows Server

Funzione JetCommitTransaction

La funzione JetCommitTransaction esegue il commit delle modifiche apportate allo stato del database durante il punto di salvataggio corrente ed esegue la migrazione al punto di salvataggio precedente. Se viene eseguito il commit del punto di salvataggio più esterno, verrà eseguito il commit delle modifiche apportate durante il punto di salvataggio nello stato del database e la sessione esce dalla transazione.

    JET_ERR JET_API JetCommitTransaction(
      __in          JET_SESID sesid,
      __in          JET_GRBIT grbit
    );

Parametri

sesid

Sessione da utilizzare per questa chiamata.

grbit

Un gruppo di bit che specifica zero o più delle opzioni seguenti.

Valore

Significato

JET_bitCommitLazyFlush

In genere viene eseguito il commit della transazione, ma questa API non attende che la transazione venga scaricata nel file di log delle transazioni prima di tornare al chiamante. Ciò riduce drasticamente la durata di un'operazione di commit a costo di durabilità. Qualsiasi transazione non scaricata nel log prima che un arresto anomalo venga interrotta automaticamente durante il ripristino di arresto anomalo durante la chiamata successiva a JetInit.

Se vengono specificati JET_bitWaitLastLevel0Commit o JET_bitWaitAllLevel0Commit, questa opzione viene ignorata.

Se questa chiamata a JetCommitTransaction non corrisponde alla prima chiamata a JetBeginTransaction per questa sessione, questa opzione viene ignorata. Ciò è dovuto al fatto che l'azione finale che si verifica sul punto di salvataggio più esterno è il fattore determinante per stabilire se l'intera transazione viene effettivamente sottoposta a commit su disco.

JET_bitWaitAllLevel0Commit

Tutte le transazioni di cui è stato eseguito il commit in precedenza da qualsiasi sessione che non sono ancora state scaricate nel file di log delle transazioni verranno scaricate immediatamente. Questa API attenderà che le transazioni siano state scaricate prima di tornare al chiamante.

Questa opzione può essere usata anche se la sessione non è attualmente in una transazione.

Questa opzione non può essere utilizzata in combinazione con qualsiasi altra opzione.

Questa opzione è disponibile solo a partire da Windows Server 2003.

JET_bitWaitLastLevel0Commit

Se in precedenza la sessione ha eseguito il commit di tutte le transazioni e non sono state ancora scaricate nel file di log delle transazioni, devono essere scaricate immediatamente. Questa API attenderà che le transazioni siano state scaricate prima di tornare al chiamante. Ciò è utile se l'applicazione ha eseguito il commit di diverse transazioni usando JET_bitCommitLazyFlush e ora vuole scaricarle tutte su disco.

Questa opzione può essere usata anche se la sessione non è attualmente in una transazione.

Questa opzione non può essere utilizzata in combinazione con qualsiasi altra opzione.

Valore restituito

Questa funzione restituisce il tipo di dati JET_ERR con uno dei codici restituiti seguenti. Per altre informazioni sui possibili errori ESE, vedere Errori del motore di archiviazione estendibile e parametri di gestione degli errori.

Codice restituito

Descrizione

JET_errSuccess

Operazione riuscita.

JET_errClientRequestToStopJetService

Non è possibile completare l'operazione perché tutte le attività sull'istanza associata alla sessione sono cessate a seguito di una chiamata a JetStopService.

JET_errInstanceUnavailable

Non è possibile completare l'operazione perché l'istanza associata alla sessione ha rilevato un errore irreversibile che richiede la revoca dell'accesso a tutti i dati per proteggere l'integrità dei dati.

Questo errore verrà restituito solo da Windows XP e versioni successive.

JET_errInvalidgrbit

Una delle opzioni richieste non è valida o non è stata implementata. Questo errore verrà restituito da JetCommitTransaction quando:

  • Viene specificato un grbit non valido.

  • JET_bitWaitLastLevel0Commit è stato specificato in combinazione con un altro grbit.

  • JET_bitWaitAllLevel0Commit è stato specificato in combinazione con un altro grbit.

JET_errNotInitialized

Non è possibile completare l'operazione perché l'istanza associata alla sessione non è ancora stata inizializzata.

JET_errNotInTransaction

L'operazione non è riuscita perché la sessione specificata non si trova in una transazione.

JET_errRestoreInProgress

Non è possibile completare l'operazione perché è in corso un'operazione di ripristino nell'istanza associata alla sessione.

JET_errSessionSharingViolation

La stessa sessione non può essere usata contemporaneamente per più thread.

Questo errore verrà restituito solo da Windows XP e versioni successive.

JET_errTermInProgress

Non è possibile completare l'operazione perché l'istanza associata alla sessione viene arrestata.

In caso di esito positivo, tutte le modifiche apportate al database durante il punto di salvataggio corrente per la sessione specificata verranno sottoposte a commit e tale punto di salvataggio verrà terminato. Se l'ultimo punto di salvataggio per la sessione è stato terminato, la transazione verrà scaricata facoltativamente nel file di log delle transazioni e la sessione esce dalla transazione.

In caso di errore, lo stato transazionale della sessione rimarrà invariato. Non verrà apportata alcuna modifica allo stato del database. L'applicazione deve chiamare JetRollback per interrompere la transazione.

Commenti

Deve essere presente una chiamata a JetCommitTransaction o JetRollback per corrispondere a ogni chiamata a JetBeginTransaction per una determinata sessione.

Requisiti

Requisito Valore

Client

Richiede Windows Vista, Windows XP o Windows 2000 Professional.

Server

Richiede Windows Server 2008, Windows Server 2003 o Windows 2000 Server.

Intestazione

Dichiarato in Esent.h.

Libreria

Usare ESENT.lib.

DLL

Richiede ESENT.dll.

Vedere anche

JET_ERR
JET_GRBIT
JET_SESID
JetBeginTransaction
JetCommitTransaction
JetRollback
JetStopService