Partager via


Fonction JetCommitTransaction2

S’applique à : Windows | Windows Server

La fonction JetCommitTransaction2 valide les modifications apportées à l’état de la base de données pendant le point d’enregistrement actuel et les migre vers le point d’enregistrement précédent. Si le point d’enregistrement le plus externe est validée, les modifications apportées pendant ce point d’enregistrement sont validées sur l’état de la base de données et la session quitte la transaction.

La fonction JetCommitTransaction2 a été introduite dans le système d’exploitation Windows 8.

JET_ERR JET_API JetCommitTransaction2(
  __in          JET_SESID sesid,
  __in          JET_GRBIT grbit,
  __in          DWORD cmsecDurableCommit,
  __out         JET_COMMIT_ID pCommitID
);

Paramètres

sesid

Session à utiliser pour cet appel.

grbit

Groupe de bits qui spécifient zéro ou plus des valeurs répertoriées dans le tableau suivant.

Valeur

Signification

JET_bitCommitLazyFlush

La transaction est validée normalement, mais cette API n’attend pas que la transaction soit vidée dans le fichier journal des transactions avant de revenir à l’appelant. Cela réduit considérablement la durée d’une opération de validation au détriment de la durabilité. Toute transaction qui n’est pas vidée dans le journal avant un incident sera automatiquement abandonnée lors de la récupération d’incident lors du prochain appel à la fonction JetInit .

Si JET_bitWaitLastLevel0Commit ou JET_bitWaitAllLevel0Commit sont spécifiés, cette option est ignorée.

Si cet appel à JetCommitTransaction2 ne correspond pas au premier appel à la fonction JetBeginTransaction pour cette session, cette option est ignorée. En effet, l’action finale qui se produit sur le point d’enregistrement le plus externe est le facteur déterminant si l’ensemble de la transaction est réellement validée sur le disque.

JET_bitWaitAllLevel0Commit

Toutes les transactions précédemment validées par une session qui n’ont pas encore été vidées dans le fichier journal des transactions seront vidées immédiatement. Cette API attend que les transactions aient été vidées avant de revenir à l’appelant.

Cette option peut être utilisée même si la session n’est pas actuellement dans une transaction.

Cette option ne peut pas être utilisée en combinaison avec une autre option.

Cette option est disponible dans les versions du système d’exploitation Windows Server à partir de Windows Server 2003.

JET_bitWaitLastLevel0Commit

Si la session a précédemment validée des transactions et qu’elles n’ont pas encore été vidées dans le fichier journal des transactions, elles doivent être vidées immédiatement. Cette API attend que les transactions aient été vidées avant de revenir à l’appelant. Cela est utile si l’application a précédemment validée plusieurs transactions à l’aide de JET_bitCommitLazyFlush et souhaite maintenant les vider toutes sur le disque.

Cette option peut être utilisée même si la session n’est pas actuellement dans une transaction.

Cette option ne peut pas être utilisée en combinaison avec une autre option.

cmsecDurableCommit

Durée de validation d’une transaction paresseuse.

pCommitID

Commit-ID associé à cet enregistrement de validation.

Valeur retournée

Cette fonction retourne le type de données JET_ERR avec l’un des codes de retour répertoriés dans le tableau suivant. Pour plus d’informations sur les erreurs possibles du moteur de stockage extensible (ESE), consultez Erreurs du moteur de stockage extensible et paramètres de gestion des erreurs.

Code de retour

Description

JET_errSuccess

L’opération s’est terminée avec succès.

JET_errClientRequestToStopJetService

Il n’est pas possible d’effectuer l’opération, car toute l’activité sur le instance associée à la session a cessé à la suite d’un appel à la fonction JetStopService.

JET_errInstanceUnavailable

Il n’est pas possible d’effectuer l’opération, car le instance associé à la session a rencontré une erreur irrécupérable qui exige que l’accès à toutes les données soit révoqué pour protéger l’intégrité de ces données.

Cette erreur n’est retournée que par les versions du système d’exploitation Windows à partir de Windows XP.

JET_errInvalidgrbit

L’une des options demandées n’était pas valide ou n’était pas implémentée. Cette erreur est retournée par la fonction JetCommitTransaction2 lorsque les événements suivants se produisent :

  • Un grbit illégal est spécifié.

  • JET_bitWaitLastLevel0Commit a été spécifié en combinaison avec un autre grbit.

  • JET_bitWaitAllLevel0Commit a été spécifié en combinaison avec un autre grbit.

JET_errNotInitialized

Il n’est pas possible d’effectuer l’opération, car le instance associé à la session n’a pas encore été initialisé.

JET_errNotInTransaction

L’opération a échoué, car la session donnée ne se trouve pas dans une transaction.

JET_errRestoreInProgress

Il n’est pas possible d’effectuer l’opération, car une opération de restauration est en cours sur le instance associé à la session.

JET_errSessionSharingViolation

La même session ne peut pas être utilisée pour plusieurs threads en même temps.

Cette erreur n’est retournée que par les versions du système d’exploitation Windows à partir de Windows XP.

JET_errTermInProgress

Il n’est pas possible d’effectuer l’opération, car le instance associé à la session est en cours d’arrêt.

En cas de réussite, toutes les modifications apportées à la base de données pendant le point d’enregistrement actuel pour la session donnée seront validées et ce point d’enregistrement sera terminé. Si le dernier point d’enregistrement de la session a été terminé, la transaction est éventuellement vidée dans le fichier journal des transactions et la session quitte la transaction.

En cas d’échec, l’état transactionnel de la session reste inchangé. Aucune modification de l’état de la base de données ne se produira. L’application doit appeler la fonction JetRollback pour annuler la transaction.

Notes

Il doit y avoir un seul appel à JetCommitTransaction2 ou JetRollback pour correspondre à chaque appel à JetBeginTransaction pour une session donnée.

Spécifications

Condition requise Valeur

Client

Nécessite Windows 8.

Serveur

Nécessite Windows Server 2012.

En-tête

Déclaré dans Esent.h.

Bibliothèque

Utilisez ESENT.lib.

DLL

Nécessite ESENT.dll.

Voir aussi

JET_ERR
JET_GRBIT
JET_SESID
JetBeginTransaction
JetCommitTransaction
JetRollback
JetStopService