Exécution d'opérations de traitement par lot (XMLA)
Vous pouvez utiliser la commande Batch dans XML for Analysis (XMLA) pour exécuter plusieurs commandes XMLA à l’aide d’une seule méthode d’exécution XMLA. Vous pouvez exécuter plusieurs commandes contenues dans la commande Batch
sous la forme d'une transaction unique ou de plusieurs transactions individuelles pour chaque commande, en série ou en parallèle. Vous pouvez également spécifier des liaisons hors ligne et d’autres propriétés dans la commande pour traiter Batch
plusieurs objets Microsoft SQL Server Analysis Services.
Exécution de commandes Batch transactionnelles et non transactionnelles
La commande Batch
peut exécuter les commandes selon deux modes :
Transactionnelle
Si l’attribut Transaction
de la commande a la Batch
valeur true, la Batch
commande exécute toutes les commandes contenues dans la Batch
commande dans un seul lot transactionnel .
Si une commande échoue dans un lot transactionnel, Analysis Services restaure toute commande de la Batch
commande qui s’est exécutée avant l’échec de la commande et la Batch
commande se termine immédiatement. Les commandes contenues dans la commande Batch
dont l'exécution n'a pas encore eu lieu ne sont pas exécutées. Une fois la commande Batch
terminée, la commande Batch
fait état des erreurs qui se sont produites pour la commande ayant échoué.
Non transactionnel
Si l’attribut Transaction
est défini sur false, la Batch
commande exécute chaque commande contenue dans la Batch
commande dans une transaction distincte, un lot non transactionnel . En cas d'échec d'une commande dans un lot non transactionnel, la commande Batch
continue d'exécuter les commandes venant après la commande qui a échoué. Après avoir tenté d'exécuter toutes les Batch
commandes contenues dans la commande Batch
, la commande Batch
fait état des erreurs qui se sont éventuellement produites.
Tous les résultats retournés par les commandes contenues dans une commande Batch
sont retournés dans l'ordre qui est le leur dans la commande Batch
. Les résultats retournés par une commande Batch
varient selon que la commande Batch
est transactionnelle ou non transactionnelle.
Notes
Si une Batch
commande contient une commande qui ne retourne pas de sortie, telle que la commande Lock , et que cette commande s’exécute correctement, la Batch
commande retourne un élément racine vide dans l’élément results. L'élément root
vide garantit que chaque commande contenue dans une commande Batch
peut être mise en correspondance avec l'élément root
approprié pour les résultats de cette commande.
Retour des résultats d'un lot transactionnel
Les résultats des commandes exécutées dans un lot transactionnel ne sont pas retournés tant que la commande Batch
n'a pas abouti complètement. Les résultats ne sont pas retournés après l'exécution de chaque commande, car toute commande qui échoue dans un lot transactionnel entraîne l'annulation de la commande Batch
entière et de toutes les commandes qu'elle contient. Si toutes les commandes démarrent et s’exécutent correctement, l’élément de retour de l’élément ExecuteResponse retourné par la méthode pour la Execute
Batch
commande contient un élément de résultat , qui à son tour contient un root
élément pour chaque commande exécutée correctement contenue dans la Batch
commande. Si la commande Batch
contient une commande qui ne peut pas démarrer ou aboutir, la méthode Execute
retourne une erreur SOAP pour la commande Batch
qui contient l'erreur de la commande qui a échoué.
Retour des résultats d'un lot non transactionnel
Les résultats des commandes exécutées dans un lot non transactionnel sont retournés dans l'ordre qui est le leur dans la commande Batch
et tels qu'ils sont retournés par chaque commande. Si, à l'intérieure de la commande Batch
, aucune commande ne peut démarrer correctement, la méthode Execute
retourne une erreur SOAP qui contient une erreur pour la commande Batch
. Si au moins une commande a démarré correctement, l'élément return
de l'élément ExecuteResponse
retourné par la méthode Execute
pour la commande Batch
contient un élément results
qui, pour sa part, contient un élément root
pour chaque commande contenue dans la commande Batch
. Si une ou plusieurs commandes d’un lot non transactionnel ne peuvent pas être démarrées ou ne se terminent pas, l’élément root
de cette commande ayant échoué contient un élément d’erreur décrivant l’erreur.
Notes
Du moment où au moins une commande parvient à démarrer dans un lot non transactionnel, celui-ci est considéré comme s'étant exécuté correctement, même si chaque commande contenue dans le lot non transactionnel retourne une erreur dans les résultats de la commande Batch
.
Utilisation d'une exécution en série et parallèle
Vous pouvez utiliser la commande Batch
pour exécuter les commandes qu'elle contient en série ou en parallèle. Lorsque les commandes sont exécutées en série, la commande suivante incluse dans la commande Batch
ne peut pas démarrer tant que la commande en cours d'exécution dans la commande Batch
n'a pas abouti. Lorsque les commandes sont exécutées en parallèle, plusieurs commandes peuvent être exécutées simultanément par la commande Batch
.
Pour exécuter des commandes en parallèle, vous ajoutez les commandes à exécuter en parallèle à la propriété Parallel de la Batch
commande. Actuellement, Analysis Services ne peut exécuter que des commandes de processus contiguës et séquentielles en parallèle. Toute autre commande XMLA, telle que Create ou Alter, incluse dans la Parallel
propriété est exécutée en série.
Analysis Services tente d’exécuter toutes les Process
commandes incluses dans la Parallel
propriété en parallèle, mais ne peut pas garantir que toutes les commandes incluses Process
peuvent être exécutées en parallèle. L'instance analyse chaque commande Process
. Si elle détermine qu'une commande Process
ne peut pas être exécutée en parallèle, elle est exécutée en série.
Notes
Pour exécuter des commandes en parallèle, l’attribut Transaction
de la commande doit avoir la Batch
valeur true, car Analysis Services ne prend en charge qu’une seule transaction active par connexion et les lots non transactionnels exécutent chaque commande dans une transaction distincte. Si vous incluez la propriété Parallel
dans un lot non transactionnel, une erreur se produit.
Limitation de l'exécution parallèle
Un instance Analysis Services tente d’exécuter autant de Process
commandes en parallèle que possible, jusqu’aux limites de l’ordinateur sur lequel le instance s’exécute. Vous pouvez limiter le nombre de commandes Process
pouvant s'exécuter simultanément en définissant l'attribut maxParallel
de la propriété Parallel
avec une valeur indiquant le nombre maximal de commandes Process
qui peuvent être exécutées en parallèle.
Par exemple, une propriété Parallel
contient les commandes suivantes dans l'ordre indiqué :
Create
Process
Alter
Process
Process
Process
Delete
Process
Process
L'attribut maxParalle
de cette propriété Parallel
est défini à 2. Par conséquent, l'instance exécute les listes précédentes de commandes comme décrit dans la liste suivante :
La commande 1 s'exécute en série, car la commande 1 est une commande
Create
et seules les commandesProcess
peuvent être exécutées en parallèle.La commande 2 s'exécute en série une fois que la commande 1 a abouti.
La commande 3 s'exécute en série une fois que la commande 2 a abouti.
Les commandes 4 et 5 s'exécutent en parallèle une fois que la commande 3 a abouti. Bien que la commande 6 soit également une commande
Process
, elle ne peut pas s'exécuter en parallèle avec les commandes 4 et 5, car la propriétémaxParallel
est définie à 2.La commande 6 s'exécute en série une fois que les commandes 4 et 5 ont abouti.
La commande 7 s'exécute en série une fois que la commande 6 a abouti.
Les commandes 8 et 9 s'exécutent en parallèle une fois que la commande 7 a abouti.
Utilisation de la commande Batch pour traiter les objets
La Batch
commande contient plusieurs propriétés et attributs facultatifs spécifiquement inclus pour prendre en charge le traitement de plusieurs projets Analysis Services :
L'attribut
ProcessAffectedObjects
de la commandeBatch
indique si l'instance doit également traiter les objets qui nécessitent un retraitement du fait de l'inclusion d'une commandeProcess
dans la commandeBatch
traitant un objet spécifié.La propriété Bindings contient une collection de liaisons hors ligne utilisées par toutes les
Process
commandes de laBatch
commande.La propriété DataSource contient une liaison hors ligne pour une source de données utilisée par toutes les
Process
commandes de laBatch
commande.La propriété DataSourceView contient une liaison hors ligne pour une vue de source de
Process
données utilisée par toutes les commandes de laBatch
commande.La propriété ErrorConfiguration spécifie la façon dont la
Batch
commande gère les erreurs rencontrées par toutes lesProcess
commandes contenues dans laBatch
commande.Important
Une commande
Process
ne peut pas comporter les propriétésBindings
,DataSource
,DataSourceView
ouErrorConfiguration
si la commandeProcess
est contenue dans une commandeBatch
. Si vous devez spécifier ces propriétés pour une commandeProcess
, fournissez les informations nécessaires dans les propriétés correspondantes de la commandeBatch
qui contient la commandeProcess
.
Voir aussi
Élément Batch (XMLA)
Élément Process (XMLA)
Traitement des objets de modèles multidimensionnels
Développement avec XMLA dans Analysis Services