Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Chaque commande XML for Analysis (XMLA) envoyée à une instance de Microsoft SQL Server Analysis Services s’exécute dans le contexte d’une transaction sur la session implicite ou explicite actuelle. Pour gérer chacune de ces transactions, vous utilisez les commandes BeginTransaction, CommitTransaction et RollbackTransaction . En utilisant ces commandes, vous pouvez créer des transactions implicites ou explicites, modifier le nombre de références de transaction, ainsi que démarrer, valider ou restaurer des transactions.
Transactions implicites et explicites
Une transaction est implicite ou explicite :
Transaction implicite
Analysis Services crée une transaction implicite pour une commande XMLA si la BeginTransaction commande ne spécifie pas le début d’une transaction. Analysis Services valide toujours une transaction implicite si la commande réussit et restaure une transaction implicite en cas d’échec de la commande.
Transaction explicite
Analysis Services crée une transaction explicite si la BeginTransaction commande démarre une transaction. Toutefois, Analysis Services valide uniquement une transaction explicite si une CommitTransaction commande est envoyée et restaure une transaction explicite si une RollbackTransaction commande est envoyée.
En outre, Analysis Services restaure les transactions implicites et explicites si la session active se termine avant la fin de la transaction active.
Transactions et nombres de références
Analysis Services gère un nombre de références de transaction pour chaque session. Toutefois, Analysis Services ne prend pas en charge les transactions imbriquées dans laquelle une seule transaction active est conservée par session. Si la session active n’a pas de transaction active, le nombre de références de transaction est défini sur zéro.
En d’autres termes, chaque BeginTransaction commande incrémente le nombre de références par un, tandis que chaque CommitTransaction commande décrémente le nombre de références par un. Si une CommitTransaction commande définit le nombre de transactions sur zéro, Analysis Services valide la transaction.
Toutefois, la RollbackTransaction commande restaure la transaction active, quelle que soit la valeur actuelle du nombre de références de transaction. En d’autres termes, une seule RollbackTransaction commande restaure la transaction active, quel que soit le nombre de BeginTransaction commandes ou CommitTransaction de commandes envoyées, et définit le nombre de références de transaction sur zéro.
Début d’une transaction
La BeginTransaction commande commence une transaction explicite sur la session active et incrémente le nombre de références de transaction pour la session active par un. Toutes les commandes suivantes sont considérées comme étant au sein de la transaction active, jusqu’à ce que les commandes suffisantes CommitTransaction soient envoyées pour valider la transaction active ou qu’une seule RollbackTransaction commande soit envoyée pour restaurer la transaction active.
Validation d’une transaction
La CommitTransaction commande valide les résultats des commandes exécutées après l’exécution de la BeginTransaction commande sur la session active. Chaque CommitTransaction commande décrémente le nombre de références pour les transactions actives sur une session. Si une CommitTransaction commande définit le nombre de références sur zéro, Analysis Services valide la transaction active. S’il n’existe aucune transaction active (en d’autres termes, le nombre de références de transaction pour la session active est déjà défini sur zéro), une CommitTransaction commande génère une erreur.
Restauration d’une transaction
La RollbackTransaction commande restaure les résultats des commandes exécutées après l’exécution de la BeginTransaction commande sur la session active. La RollbackTransaction commande restaure la transaction active, quel que soit le nombre de références de transaction actuel, et définit le nombre de références de transaction sur zéro. S’il n’existe aucune transaction active (en d’autres termes, le nombre de références de transaction pour la session active est déjà défini sur zéro), une RollbackTransaction commande génère une erreur.