Función JetCommitTransaction2

Se aplica a: Windows | Windows Server

La función JetCommitTransaction2 confirma los cambios realizados en el estado de la base de datos durante el punto de guardado actual y los migra al punto de guardado anterior. Si se confirma el punto de guardado más externo, los cambios realizados durante ese punto de guardado se confirmarán en el estado de la base de datos y la sesión cerrará la transacción.

La función JetCommitTransaction2 se introdujo en el 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
);

Parámetros

sesid

La sesión que se va a usar para esta llamada.

grbit

Grupo de bits que especifican cero o más de los valores enumerados en la tabla siguiente.

Value

Significado

JET_bitCommitLazyFlush

La transacción se confirma normalmente, pero esta API no espera a que la transacción se vacíe en el archivo de registro de transacciones antes de volver al autor de la llamada. Esto reduce drásticamente la duración de una operación de confirmación a costa de durabilidad. Cualquier transacción que no se vacíe en el registro antes de que se anule automáticamente un bloqueo durante la recuperación de bloqueos durante la siguiente llamada a la función JetInit .

Si se especifican JET_bitWaitLastLevel0Commit o JET_bitWaitAllLevel0Commit, esta opción se omite.

Si esta llamada a JetCommitTransaction2 no coincide con la primera llamada a la función JetBeginTransaction de esta sesión, esta opción se omite. Esto se debe a que la acción final que se produce en el punto de guardado más externo es el factor determinante en si toda la transacción se confirma realmente en el disco.

JET_bitWaitAllLevel0Commit

Todas las transacciones confirmadas previamente por cualquier sesión que aún no se hayan vaciado en el archivo de registro de transacciones se vaciarán inmediatamente. Esta API esperará hasta que las transacciones se hayan vaciado antes de volver al autor de la llamada.

Esta opción se puede usar incluso si la sesión no está actualmente en una transacción.

Esta opción no se puede usar en combinación con ninguna otra opción.

Esta opción está disponible en versiones del sistema operativo Windows Server a partir de Windows Server 2003.

JET_bitWaitLastLevel0Commit

Si la sesión ha confirmado previamente las transacciones y aún no se han vaciado en el archivo de registro de transacciones, deben vaciarse inmediatamente. Esta API esperará hasta que las transacciones se hayan vaciado antes de volver al autor de la llamada. Esto es útil si la aplicación ha confirmado previamente varias transacciones mediante JET_bitCommitLazyFlush y ahora quiere vaciar todas ellas en el disco.

Esta opción se puede usar incluso si la sesión no está actualmente en una transacción.

Esta opción no se puede usar en combinación con ninguna otra opción.

cmsecDurableCommit

Duración para confirmar una transacción diferida.

pCommitID

Identificador de confirmación asociado a este registro de confirmación.

Valor devuelto

Esta función devuelve el tipo de datos JET_ERR con uno de los códigos de retorno enumerados en la tabla siguiente. Para obtener más información sobre los posibles errores del motor de almacenamiento extensible (ESE), vea Extensible Storage Engine Errors and Error Handling Parameters(Parámetros de control de errores).

Código devuelto

Descripción

JET_errSuccess

La operación se ha completado correctamente.

JET_errClientRequestToStopJetService

No es posible completar la operación porque toda la actividad de la instancia asociada a la sesión ha dejado de funcionar como resultado de una llamada a la función JetStopService .

JET_errInstanceUnavailable

No es posible completar la operación porque la instancia asociada a la sesión ha encontrado un error irrecuperable que requiere que se revoque el acceso a todos los datos para proteger la integridad de esos datos.

Este error solo lo devolverán las versiones del sistema operativo Windows a partir de Windows XP.

JET_errInvalidgrbit

Una de las opciones solicitadas no era válida o no se implementaba. La función JetCommitTransaction2 devolverá este error cuando se produzca lo siguiente:

  • Se especifica un grbit no válido.

  • JET_bitWaitLastLevel0Commit se especificó en combinación con otro grbit.

  • JET_bitWaitAllLevel0Commit se especificó en combinación con otro grbit.

JET_errNotInitialized

No es posible completar la operación porque la instancia asociada a la sesión aún no se ha inicializado.

JET_errNotInTransaction

Error en la operación porque la sesión especificada no está en una transacción.

JET_errRestoreInProgress

No es posible completar la operación porque una operación de restauración está en curso en la instancia asociada a la sesión.

JET_errSessionSharingViolation

No se puede usar la misma sesión para más de un subproceso al mismo tiempo.

Este error solo lo devolverán las versiones del sistema operativo Windows a partir de Windows XP.

JET_errTermInProgress

No es posible completar la operación porque la instancia asociada a la sesión se está cerrando.

Si se ejecuta correctamente, se confirmarán los cambios realizados en la base de datos durante el punto de guardado actual de la sesión determinada y se finalizará ese punto de guardado. Si se finalizó el último punto de guardado de la sesión, la transacción se vaciará opcionalmente en el archivo de registro de transacciones y la sesión cerrará la transacción.

Si se produce un error, el estado transaccional de la sesión permanecerá sin cambios. No se producirá ningún cambio en el estado de la base de datos. La aplicación debe llamar a la función JetRollback para anular la transacción.

Observaciones

Debe haber una llamada a JetCommitTransaction2 o JetRollback para que coincida con cada llamada a JetBeginTransaction para una sesión determinada.

Requisitos

Requisito Value

Cliente

Requiere Windows 8.

Servidor

Requiere Windows Server 2012.

Encabezado

Declarado en Esent.h.

Library

Use ESENT.lib.

Archivo DLL

Requiere ESENT.dll.

Consulte también

JET_ERR
JET_GRBIT
JET_SESID
JetBeginTransaction
JetCommitTransaction
JetRollback
JetStopService