Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
cliente transacional é um componente de um sistema de processamento de transações (TPS) que utiliza a interface exportada de um gestor de recursos para aceder a um recurso, como uma base de dados, que o gestor de recursos suporta.
Normalmente, o cliente cria uma transação, executa um conjunto de operações de banco de dados e, em seguida, confirma a transação para tornar as operações permanentes. Se o cliente encontrar um erro, ele pode reverter a transação para remover as operações da transação em vez de confirmar a transação.
Normalmente, um cliente transacional que usa KTM de modo kernel deve executar as seguintes tarefas para cada transação:
Crie um objeto de transação.
Uma chamada para ZwCreateTransaction cria um objeto de transação, fornece um manipulador de objeto e atribui um GUID que o cliente pode passar para o gestor de recursos para identificar a transação.
Obtenha o identificador do objeto de transação.
O cliente pode chamar ZwQueryInformationTransaction para obter o identificador de objeto.
Passe o identificador do objeto de transação para um gerenciador de recursos.
O cliente normalmente chama a interface exportada do gerenciador de recursos para abrir um caminho de comunicação para o gerenciador de recursos e associar o caminho à transação. Por exemplo, o gerenciador de recursos pode fornecer uma CreateDataObject rotina semelhante àquela que o tópico Understanding TPS Components descreve.
Execute operações a serem incluídas na transação.
Normalmente, o cliente chama a interface do gerenciador de recursos para acessar o recurso do gerenciador de recursos. Por exemplo, o cliente de um gerenciador de banco de dados pode ler e gravar no banco de dados.
Confirme ou reverta a transação.
Se todas as operações de recurso forem bem-sucedidas, o cliente deverá chamar ZwCommitTransaction para tornar as operações permanentes. Se uma operação falhar, o cliente deve chamar ZwRollbackTransaction em vez de ZwCommitTransaction. Por exemplo, se o cliente de um gerenciador de banco de dados determinar que uma de uma série de operações de gravação falhou, o cliente deverá chamar ZwRollbackTransaction para que nenhuma das operações de gravação se torne permanente.
Os clientes podem chamar ZwCommitTransaction e ZwRollbackTransaction de forma síncrona ou assíncrona. Se os clientes chamarem essas rotinas de forma síncrona, elas não retornarão até que a operação de confirmação ou reversão seja concluída.
Para obter mais informações sobre como confirmar e reverter transações, consulte Manipulando operações de transação.
Feche o identificador de objeto de transação.
Depois que o cliente terminar de processar a transação, ele deve chamar ZwClose para fechar o identificador do objeto de transação
Um TPS pode incluir mais de um gerenciador de recursos. Se a transação de um cliente incluir operações em vários recursos, como dois bancos de dados suportados por dois gerentes de recursos, o cliente normalmente faz o seguinte:
Cria um único objeto de transação para cada transação.
Passa o identificador do objeto de transação para cada gerenciador de recursos.
Executa operações em cada banco de dados chamando a interface de cada gerenciador de recursos.
Confirma a transação se todas as operações forem concluídas sem erros ou reverte a transação se um erro for detetado.
Se o seu TPS incluir um gestor de transações superior , os clientes transacionais normalmente não contactam a KTM. Para obter mais informações sobre gestores de transações de alto nível e seus clientes, consulte Criando umGestor de Transações de Alto Nível.
Os clientes transacionais podem chamar ZwSetInformationTransaction para definir informações específicas da transação. Por exemplo, um cliente pode definir um valor de tempo limite para a transação ou fornecer uma cadeia de caracteres descritiva. Os clientes podem ligar para ZwQueryInformationTransaction para recuperar informações sobre uma transação. Por exemplo, um cliente pode chamar essa rotina para determinar se uma transação foi confirmada ou revertida.