Condividi tramite


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:

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