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.
Cada comando XMLA (XML for Analysis) enviado para uma instância do Microsoft SQL Server Analysis Services é executado no 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 . Usando esses comandos, você pode criar transações implícitas ou explícitas, alterar a contagem de referência de transações, bem como 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 confirma 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ó confirma 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 reverte 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 BeginTransaction comando incrementa a contagem de referência por um, enquanto cada CommitTransaction comando diminui a contagem de referência por um. Se um CommitTransaction comando definir a contagem de transações como zero, o Analysis Services confirmará a transação.
No entanto, o RollbackTransaction comando reverte a transação ativa independentemente do valor atual da contagem de referência de transação. Em outras palavras, um único RollbackTransaction comando reverte a transação ativa, independentemente de quantos BeginTransaction comandos ou CommitTransaction comandos foram enviados e define a contagem de referência de transação como zero.
Iniciando uma transação
O BeginTransaction comando 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 são considerados dentro da transação ativa, até que comandos suficientes CommitTransaction sejam enviados para confirmar a transação ativa ou um único RollbackTransaction comando seja enviado para reverter a transação ativa.
Confirmando uma transação
O CommitTransaction comando confirma os resultados dos comandos executados após a execução do BeginTransaction comando na sessão atual. Cada CommitTransaction comando 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 nenhuma transação ativa (em outras palavras, a contagem de referência de transação para a sessão atual já está definida como zero), um CommitTransaction comando resultará em um erro.
Revertendo uma transação
O RollbackTransaction comando reverte os resultados dos comandos executados após a execução do BeginTransaction comando na sessão atual. O RollbackTransaction comando reverte a transação ativa, independentemente 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 nenhuma transação ativa (em outras palavras, a contagem de referência de transação para a sessão atual já está definida como zero), um RollbackTransaction comando resultará em um erro.