Partager via


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 ExecuteBatch 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é :

  1. Create

  2. Process

  3. Alter

  4. Process

  5. Process

  6. Process

  7. Delete

  8. Process

  9. 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 commandes Process 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 commande Batch indique si l'instance doit également traiter les objets qui nécessitent un retraitement du fait de l'inclusion d'une commande Process dans la commande Batch traitant un objet spécifié.

  • La propriété Bindings contient une collection de liaisons hors ligne utilisées par toutes les Process commandes de la Batch commande.

  • La propriété DataSource contient une liaison hors ligne pour une source de données utilisée par toutes les Process commandes de la Batch 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 la Batch commande.

  • La propriété ErrorConfiguration spécifie la façon dont la Batch commande gère les erreurs rencontrées par toutes les Process commandes contenues dans la Batch commande.

    Important

    Une commande Process ne peut pas comporter les propriétés Bindings, DataSource, DataSourceView ou ErrorConfiguration si la commande Process est contenue dans une commande Batch. Si vous devez spécifier ces propriétés pour une commande Process, fournissez les informations nécessaires dans les propriétés correspondantes de la commande Batch qui contient la commande Process.

Voir aussi

Élément Batch (XMLA)
Élément Process (XMLA)
Traitement des objets de modèles multidimensionnels
Développement avec XMLA dans Analysis Services