Transactions

Uma transação é um objeto que define uma unidade lógica de trabalho. A transação está ativa desde que haja um identificador referenciando a transação e seja considerada ativa se a transação ainda não tiver sido confirmada ou revertida. Se uma transação for criada e todos os identificadores para ela tiverem sido fechados antes de ocorrer uma confirmação ou reversão, a transação será revertida.

Considere o caso de um cliente transacional no modo de usuário que cria uma transação para definir o escopo de suas operações e, em seguida, executa atualizações em um ou mais gerenciadores de recursos. Ocorre o seguinte:

  1. O cliente chama a função CreateTransaction para criar a transação e recebe um identificador para essa transação como o valor retornado.

    A transação pode ser aberta ou herdada por qualquer número de processos; assim, cada processo está envolvido na transação. A falha de qualquer um desses processos fará com que a transação seja anulada.

    Essa transação ainda pode não ser persistente. Somente as transações que atingiram o estado preparado deverão ser recuperadas entre falhas do sistema se a transação usar o log de anulação presumida.

  2. O cliente deve passar uma transação para o gerenciador de recursos explicitamente.

  3. O cliente executa todas as operações transacionais com um ou mais RMs, como sistemas de arquivos transacionados.

  4. O cliente chama a função CommitTransaction .

  5. O gerenciador de recursos recebe notificações da KTM para preparar e confirmar seus dados.

Transações e threads

As transações não são iguais aos threads. Vários threads ou processos podem fazer parte de uma única transação. Por outro lado, um thread pode fazer parte de várias transações diferentes em momentos diferentes.

Funções de transação

As funções a seguir são usadas com transações.

Função Descrição
Committransaction Solicita que a transação especificada seja confirmada.
CommitTransactionAsync Solicita que a transação especificada seja confirmada.
Createtransaction Cria um novo objeto de transação.
GetTransactionInformation Retorna as informações solicitadas sobre a transação especificada.
OpenTransaction Abre uma transação existente.
RollbackTransaction Solicita que a transação especificada seja revertida.
RollbackTransactionAsync Solicita que a transação especificada seja revertida. Essa função retorna de forma assíncrona.
SetTransactionInformation Define as informações de transação para a transação especificada.