Suporte a transações em OLE DB
A transação é uma maneira de agrupar ou lote, uma série de atualizações a uma fonte de dados, de modo que todas bem-sucedidas e são confirmadas ao mesmo tempo ou (se qualquer um deles falhar) nenhuma será confirmada e a transação inteira é revertida. Esse processo garante a integridade do resultado na fonte de dados.
Banco de dados OLE oferece suporte a transações com três métodos a seguir:
Relação de sessões e transações
Um objeto de fonte de dados único pode criar um ou mais objetos de sessão, cada um deles pode ser dentro ou fora do escopo de uma transação em um determinado momento.
Quando uma sessão não inserir uma transação, todo o trabalho feito dessa sessão no armazenamento de dados imediatamente está comprometido em cada chamada de método. (Isso é, às vezes, denominado modo implícito ou autocommit.)
Quando uma sessão insere uma transação, todo o trabalho feito dessa sessão no armazenamento de dados é parte daquela transação e é confirmado ou anulado como uma única unidade. (Isso é às vezes chamado como modo de confirmação manual.)
Suporte a transações é específica ao provedor. Se o provedor que você está usando oferece suporte a transações, um objeto de sessão que suporta ITransaction e ITransactionLocal pode inserir um simples (isto é, não aninhados) transação. A classe de modelos OLE DB CSession oferece suporte a essas interfaces e é a maneira recomendada para implementar o suporte a transações em Visual C++.
Inicial e final da transação
Você chamar o StartTransaction, Confirmar, e Anular métodos do objeto de conjunto de linhas no consumidor.
Chamando ITransactionLocal::StartTransaction inicia uma nova transação local. Quando você inicia a transação, quaisquer alterações exigidas por operações subseqüentes não são realmente aplicadas ao armazenamento de dados até que você confirmar a transação.
Chamando ITransaction:: Commit ou ITransaction:: Abort termina a transação. Confirmar faz com que todas as alterações dentro do escopo da transação a ser aplicado no armazenamento de dados. Anular faz com que todas as alterações dentro do escopo de transação a ser cancelada e o armazenamento de dados é deixada no estado que ele tinha antes da transação iniciada.
Transações aninhadas
A transação aninhada ocorre ao iniciar uma nova transação local quando uma transação ativa já existe na sessão. A nova transação seja iniciada como uma transação aninhada abaixo da transação atual. Se o provedor não oferece suporte a transações aninhadas, chamada StartTransaction quando há já uma transação ativa na sessão retorna XACT_E_XTIONEXISTS.
Transações distribuídas
Uma transação distribuída é uma transação que atualiza os dados distribuídos; ou seja, os dados em mais de um sistema de computador da rede. Se você quiser suportar transações através de um sistema distribuído, você deve usar o.NET Framework em vez do suporte a transações OLE DB.