Compartilhar via


Função JetCommitTransaction2

Aplica-se a: Windows | Windows Server

A função JetCommitTransaction2 confirma as alterações feitas no estado do banco de dados durante o ponto de salvamento atual e as migra para o ponto de salvamento anterior. Se o ponto de salvamento mais externo for confirmado, as alterações feitas durante esse ponto de salvamento serão confirmadas no estado do banco de dados e a sessão sairá da transação.

A função JetCommitTransaction2 foi introduzida no sistema operacional 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

A sessão a ser usada para essa chamada.

grbit

Um grupo de bits que especificam zero ou mais dos valores listados na tabela a seguir.

Valor

Significado

JET_bitCommitLazyFlush

A transação é confirmada normalmente, mas essa API não aguarda que a transação seja liberada para o arquivo de log de transações antes de retornar ao chamador. Isso reduz drasticamente a duração de uma operação de confirmação ao custo da durabilidade. Qualquer transação que não seja liberada para o log antes de uma falha será anulada automaticamente durante a recuperação de falha durante a próxima chamada para a função JetInit .

Se JET_bitWaitLastLevel0Commit ou JET_bitWaitAllLevel0Commit forem especificados, essa opção será ignorada.

Se essa chamada para JetCommitTransaction2 não corresponder à primeira chamada à função JetBeginTransaction para esta sessão, essa opção será ignorada. Isso ocorre porque a ação final que ocorre no ponto de salvamento mais externo é o fator determinante para saber se a transação inteira está realmente confirmada no disco.

JET_bitWaitAllLevel0Commit

Todas as transações confirmadas anteriormente por qualquer sessão que ainda não tenham sido liberadas para o arquivo de log de transações serão liberadas imediatamente. Essa API aguardará até que as transações tenham sido liberadas antes de retornar ao chamador.

Essa opção pode ser usada mesmo se a sessão não estiver atualmente em uma transação.

Essa opção não pode ser usada em combinação com qualquer outra opção.

Essa opção está disponível em versões do sistema operacional Windows Server a partir do Windows Server 2003.

JET_bitWaitLastLevel0Commit

Se a sessão tiver confirmado anteriormente qualquer transação e elas ainda não tiverem sido liberadas para o arquivo de log de transações, elas deverão ser liberadas imediatamente. Essa API aguardará até que as transações tenham sido liberadas antes de retornar ao chamador. Isso será útil se o aplicativo tiver confirmado anteriormente várias transações usando JET_bitCommitLazyFlush e agora quiser liberar todas elas para o disco.

Essa opção pode ser usada mesmo se a sessão não estiver atualmente em uma transação.

Essa opção não pode ser usada em combinação com qualquer outra opção.

cmsecDurableCommit

A duração para confirmar uma transação lenta.

pCommitID

A ID de confirmação associada a esse registro de confirmação.

Valor retornado

Essa função retorna o tipo de dados JET_ERR com um dos códigos de retorno listados na tabela a seguir. Para obter mais informações sobre os possíveis erros do ESE (Mecanismo de Armazenamento Extensível), consulte Erros extensíveis do mecanismo de armazenamento e parâmetros de tratamento de erros.

Código de retorno

Descrição

JET_errSuccess

A operação foi concluída com sucesso.

JET_errClientRequestToStopJetService

Não é possível concluir a operação porque todas as atividades na instância associada à sessão cessaram como resultado de uma chamada para a função JetStopService .

JET_errInstanceUnavailable

Não é possível concluir a operação porque a instância associada à sessão encontrou um erro fatal que exige que o acesso a todos os dados seja revogado para proteger a integridade desses dados.

Esse erro só será retornado por versões do sistema operacional Windows começando com o Windows XP.

JET_errInvalidgrbit

Uma das opções solicitadas era inválida ou não implementada. Esse erro será retornado pela função JetCommitTransaction2 quando o seguinte ocorrer:

  • Um grbit ilegal é especificado.

  • JET_bitWaitLastLevel0Commit foi especificado em combinação com outro grbit.

  • JET_bitWaitAllLevel0Commit foi especificado em combinação com outro grbit.

JET_errNotInitialized

Não é possível concluir a operação porque a instância associada à sessão ainda não foi inicializada.

JET_errNotInTransaction

A operação falhou porque a sessão fornecida não está em uma transação.

JET_errRestoreInProgress

Não é possível concluir a operação porque uma operação de restauração está em andamento na instância associada à sessão.

JET_errSessionSharingViolation

A mesma sessão não pode ser usada para mais de um thread ao mesmo tempo.

Esse erro só será retornado por versões do sistema operacional Windows começando com o Windows XP.

JET_errTermInProgress

Não é possível concluir a operação porque a instância associada à sessão está sendo desligada.

Com êxito, todas as alterações feitas no banco de dados durante o ponto de salvamento atual para a sessão determinada serão confirmadas e esse ponto de salvamento será encerrado. Se o último ponto de salvamento da sessão tiver sido encerrado, a transação será opcionalmente liberada para o arquivo de log de transações e a sessão sairá da transação.

Em caso de falha, o estado transacional da sessão permanecerá inalterado. Nenhuma alteração no estado do banco de dados ocorrerá. O aplicativo deve chamar a função JetRollback para anular a transação.

Comentários

Deve haver uma chamada para JetCommitTransaction2 ou JetRollback para corresponder a cada chamada a JetBeginTransaction para uma determinada sessão.

Requisitos

Requisito Valor

Cliente

Requer Windows 8.

Servidor

Requer Windows Server 2012.

Cabeçalho

Declarado em Esent.h.

Biblioteca

Use ESENT.lib.

DLL

Requer ESENT.dll.

Confira também

JET_ERR
JET_GRBIT
JET_SESID
JetBeginTransaction
JetCommitTransaction
JetRollback
JetStopService