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:
|
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