Funzione JetCommitTransaction2
Si applica a: Windows | Windows Server
La funzione JetCommitTransaction2 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.
La funzione JetCommitTransaction2 è stata introdotta nel sistema operativo Windows 8.
JET_ERR JET_API JetCommitTransaction2(
__in JET_SESID sesid,
__in JET_GRBIT grbit,
__in DWORD cmsecDurableCommit,
__out JET_COMMIT_ID pCommitID
);
Parametri
sesid
Sessione da utilizzare per questa chiamata.
grbit
Gruppo di bit che specificano zero o più valori elencati nella tabella seguente.
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 alla funzione JetInit . Se vengono specificati JET_bitWaitLastLevel0Commit o JET_bitWaitAllLevel0Commit, questa opzione viene ignorata. Se questa chiamata a JetCommitTransaction2 non corrisponde alla prima chiamata alla funzione 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 nelle versioni del sistema operativo Windows Server 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. |
cmsecDurableCommit
Durata del commit di una transazione differita.
pCommitID
ID commit associato a questo record di commit.
Valore restituito
Questa funzione restituisce il tipo di dati JET_ERR con uno dei codici restituiti elencati nella tabella seguente. Per altre informazioni sui possibili errori di Extensible Storage Engine (ESE), vedere Extensible Storage Engine Errors and Error Handling Parameters .For more information about the possible Extensible Storage Engine errors( ESE), see Extensible Storage Engine Errors and Error Handling Parameters.
Codice restituito |
Descrizione |
---|---|
JET_errSuccess |
Operazione riuscita. |
JET_errClientRequestToStopJetService |
Non è possibile completare l'operazione perché tutte le attività nell'istanza associata alla sessione non sono più state completate a seguito di una chiamata alla funzione 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 dalle versioni del sistema operativo Windows a partire da Windows XP. |
JET_errInvalidgrbit |
Una delle opzioni richieste non è valida o non è stata implementata. Questo errore verrà restituito dalla funzione JetCommitTransaction2 quando si verifica quanto segue:
|
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 dalle versioni del sistema operativo Windows a partire da Windows XP. |
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à facoltativamente scaricata 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 la funzione JetRollback per interrompere la transazione.
Commenti
Deve essere presente una chiamata a JetCommitTransaction2 o JetRollback per trovare una corrispondenza con ogni chiamata a JetBeginTransaction per una determinata sessione.
Requisiti
Requisito | Valore |
---|---|
Client |
Richiede Windows 8. |
Server |
Richiede Windows Server 2012. |
Intestazione |
Dichiarato in Esent.h. |
Libreria |
Usare ESENT.lib. |
DLL |
Richiede ESENT.dll. |
Vedi anche
JET_ERR
JET_GRBIT
JET_SESID
JetBeginTransaction
JetCommitTransaction
JetRollback
JetStopService