Compartilhar via


Dando suporte a transações em banco de dados OLE

Uma transação é uma maneira de agrupar, ou colocar em lotes, uma série de atualizações para uma fonte de dados para que todas tenham êxito e sejam confirmadas de uma só vez ou (se alguma delas falhar) nenhuma delas seja confirmada e toda a transação seja revertida. Esse processo garante a integridade do resultado na fonte de dados.

O OLE DB dá suporte a transações com os seguintes três métodos:

Relação de sessões e transações

Um objeto de fonte de dados pode criar um ou mais objetos de sessão, cada um deles pode estar dentro ou fora do escopo de uma transação em um determinado momento.

Quando uma sessão não entra em uma transação, todo o trabalho feito dentro dessa sessão no armazenamento de dados é imediatamente confirmado em cada chamada de método. (Isso às vezes é chamado de modo de confirmação automática ou modo implícito.)

Quando uma sessão entra em uma transação, todo o trabalho feito dentro dessa sessão no armazenamento de dados faz parte dessa transação e é confirmado ou anulado como uma unidade. (Às vezes, isso é chamado de modo de confirmação manual.)

O suporte à transação é específico a cada provedor. Se o provedor que você está usando dá suporte a transações, um objeto de sessão que dá suporte a ITransaction e ITransactionLocal pode entrar em uma transação (não aninhada). A classe de Modelos OLE DB CSession dá suporte a essas interfaces e é a maneira recomendada de implementar o suporte a transações no Visual C++.

Início e término da transação

Você chama os métodos StartTransaction, Commit e Abort no objeto rowset no consumidor.

A chamada ITransactionLocal::StartTransaction inicia uma nova transação local. Quando você inicia a transação, todas as alterações exigidas por operações posteriores não são aplicadas ao armazenamento de dados até você confirmar a transação.

Chamar ITransaction::Commit ou ITransaction::Abort encerra a transação. Commit faz com que todas as alterações no escopo da transação sejam aplicadas ao armazenamento de dados. Abort faz com que todas as alterações no escopo da transação sejam canceladas e o armazenamento de dados seja deixado no estado em que estava antes do início da transação.

Transações aninhadas

Uma transação aninhada ocorre quando você inicia uma nova transação local quando já existe uma transação ativa na sessão. A nova transação é iniciada como uma transação aninhada sob a transação atual. Se o provedor não der suporte a transações aninhadas, chamar StartTransaction quando já existir uma transação ativa na sessão retornará XACT_E_XTIONEXISTS.

Transações distribuídas

Uma transação distribuída é uma transação que atualiza dados distribuídos, ou seja, os dados em mais de um sistema de computador em rede. Para suportar transações em um sistema distribuído, você deve usar o .NET Framework, em vez de suporte para transações OLE DB.

Confira também

Usando acessadores