Partilhar via


Gerenciando transações (XMLA)

Cada comando XMLA (XML for Analysis) enviado para uma instância do Microsoft SQL Server Analysis Services é executado dentro do contexto de uma transação na sessão implícita ou explícita atual. Para gerenciar cada uma dessas transações, use os comandos BeginTransaction, CommitTransaction e RollbackTransaction . Ao usar esses comandos, você poderá criar transações implícitas ou explícitas, alterar a contagem de referência de transação, além de iniciar, confirmar ou reverter transações.

Transações implícitas e explícitas

Uma transação é implícita ou explícita:

Transação implícita
O Analysis Services criará uma transação implícita para um comando XMLA se o BeginTransaction comando não especificar o início de uma transação. O Analysis Services sempre confirmará uma transação implícita se o comando for bem-sucedido e reverterá uma transação implícita se o comando falhar.

Transação explícita
O Analysis Services criará uma transação explícita se o BeginTransaction comando iniciar uma transação. No entanto, o Analysis Services só confirmará uma transação explícita se um CommitTransaction comando for enviado e reverterá uma transação explícita se um RollbackTransaction comando for enviado.

Além disso, o Analysis Services reverterá transações implícitas e explícitas se a sessão atual terminar antes da conclusão da transação ativa.

Transações e contagens de referência

O Analysis Services mantém uma contagem de referência de transação para cada sessão. No entanto, o Analysis Services não dá suporte a transações aninhadas porque apenas uma transação ativa é mantida por sessão. Se a sessão atual não tiver uma transação ativa, a contagem de referência de transação será definida como zero.

Em outras palavras, cada comando BeginTransaction incrementa a contagem de referência em um, enquanto cada comando CommitTransaction diminui a contagem de referência em um. Se um CommitTransaction comando definir a contagem de transações como zero, o Analysis Services confirmará a transação.

No entanto, o comando RollbackTransaction reverte a transação ativa a despeito do valor atual da contagem de referência de transação. Em outras palavras, um único comando RollbackTransaction reverte a transação ativa, não importando quantos comandos BeginTransaction ou comandos CommitTransaction tenham sido enviados e define a contagem de referência de transação como zero.

Iniciando uma transação

O comando BeginTransaction inicia uma transação explícita na sessão atual e incrementa a contagem de referência de transação para a sessão atual em um. Todos os comandos subsequentes serão considerados como da transação ativa, até que comandos CommitTransaction suficientes sejam enviados para a confirmação da transação ativa ou até que um único comando RollbackTransaction seja enviado para reverter a transação ativa.

Confirmando uma transação

O comando CommitTransaction comando confirma os resultados de comandos executados após a execução do comando BeginTransaction na sessão atual. Cada comando CommitTransaction diminui a contagem de referência para transações ativas em uma sessão. Se um CommitTransaction comando definir a contagem de referência como zero, o Analysis Services confirmará a transação ativa. Se não houver transação ativa (em outras palavras, se a contagem de referência de transação da sessão atual já tiver sido definida como zero), um comando CommitTransaction resultará em um erro.

Revertendo uma transação

O comando RollbackTransaction comando reverte os resultados de comandos executados após a execução do comando BeginTransaction na sessão atual. O comando RollbackTransaction reverte a transação ativa, a despeito da contagem de referência de transação atual, e define a contagem de referência de transação como zero. Se não houver transação ativa (em outras palavras, se a contagem de referência de transação da sessão atual já tiver sido definida como zero), um comando RollbackTransaction resultará em um erro.

Consulte Também

Desenvolvendo com XMLA no Analysis Services