Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Ogni comando XML for Analysis (XMLA) inviato a un'istanza di Microsoft SQL Server Analysis Services viene eseguito nel contesto di una transazione nella sessione implicita o esplicita corrente. Per gestire ognuna di queste transazioni, usare i comandi BeginTransaction, CommitTransaction e RollbackTransaction . Usando questi comandi, è possibile creare transazioni implicite o esplicite, modificare il conteggio dei riferimenti alle transazioni, nonché avviare, eseguire il commit o eseguire il rollback delle transazioni.
Transazioni implicite ed esplicite
Una transazione è implicita o esplicita:
Transazione implicita
Analysis Services crea una transazione implicita per un comando XMLA se il BeginTransaction comando non specifica l'inizio di una transazione. Analysis Services esegue sempre il commit di una transazione implicita se il comando ha esito positivo ed esegue il rollback di una transazione implicita in caso di errore del comando.
Transazione esplicita
Analysis Services crea una transazione esplicita se il BeginTransaction comando inizia una transazione. Tuttavia, Analysis Services esegue il commit di una transazione esplicita solo se viene inviato un CommitTransaction comando e esegue il rollback di una transazione esplicita se viene inviato un RollbackTransaction comando.
Inoltre, Analysis Services esegue il rollback di transazioni implicite ed esplicite se la sessione corrente termina prima del completamento della transazione attiva.
Transazioni e conteggi dei riferimenti
Analysis Services gestisce un conteggio dei riferimenti alle transazioni per ogni sessione. Tuttavia, Analysis Services non supporta le transazioni nidificate in quanto viene mantenuta una sola transazione attiva per sessione. Se la sessione corrente non dispone di una transazione attiva, il conteggio dei riferimenti alle transazioni viene impostato su zero.
In altre parole, ogni BeginTransaction comando incrementa il conteggio dei riferimenti di uno, mentre ogni CommitTransaction comando decrementa il conteggio dei riferimenti di uno. Se un CommitTransaction comando imposta il numero di transazioni su zero, Analysis Services esegue il commit della transazione.
Tuttavia, il comando esegue il RollbackTransaction rollback della transazione attiva indipendentemente dal valore corrente del conteggio dei riferimenti alle transazioni. In altre parole, un singolo RollbackTransaction comando esegue il rollback della transazione attiva, indipendentemente dal numero BeginTransaction di comandi o CommitTransaction comandi inviati e imposta il conteggio dei riferimenti alla transazione su zero.
Inizio di una transazione
Il BeginTransaction comando avvia una transazione esplicita nella sessione corrente e incrementa il conteggio dei riferimenti delle transazioni per la sessione corrente di uno. Tutti i comandi successivi vengono considerati all'interno della transazione attiva, fino a quando non vengono inviati comandi sufficienti CommitTransaction per eseguire il commit della transazione attiva o viene inviato un singolo RollbackTransaction comando per eseguire il rollback della transazione attiva.
Commit di una transazione
Il CommitTransaction comando esegue il commit dei risultati dei comandi eseguiti dopo l'esecuzione del BeginTransaction comando nella sessione corrente. Ogni CommitTransaction comando decrementa il conteggio dei riferimenti per le transazioni attive in una sessione. Se un CommitTransaction comando imposta il conteggio dei riferimenti su zero, Analysis Services esegue il commit della transazione attiva. Se non è presente alcuna transazione attiva (in altre parole, il conteggio dei riferimenti per la sessione corrente è già impostato su zero), un CommitTransaction comando genera un errore.
Rollback di una transazione
Il RollbackTransaction comando esegue il rollback dei risultati dei comandi eseguiti dopo l'esecuzione del BeginTransaction comando nella sessione corrente. Il RollbackTransaction comando esegue il rollback della transazione attiva, indipendentemente dal conteggio dei riferimenti alla transazione corrente e imposta il conteggio dei riferimenti alla transazione su zero. Se non è presente alcuna transazione attiva (in altre parole, il conteggio dei riferimenti per la sessione corrente è già impostato su zero), un RollbackTransaction comando genera un errore.