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 en tant que transaction unique ou dans des 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 Batch pour le traitement de plusieurs objets Microsoft SQL Server SQL Server Analysis Services.

Exécution de commandes Batch transactionnelles et non transactionnelles

La commande Batch exécute les commandes de l’une des deux manières suivantes :

Transactionnelle
Si l’attribut Transaction de la commande Batch a la valeur true, la commande Batch exécute toutes les commandes contenues par la commande Batch dans un lot transactionnel unique.

Si une commande échoue dans un lot transactionnel, SQL Server Analysis Services annule toute commande de la commande Batch exécutée avant l’échec de la commande et la commande Batch se termine immédiatement. Toutes les commandes de la commande Batch qui n’ont pas encore été exécutées ne sont pas exécutées. Une fois la commande Batch terminée, la commande Batch signale les erreurs qui se sont produites pour la commande ayant échoué.

Nontransactionnelle
Si l’attribut Transaction a la valeur false, la commande Batch exécute chaque commande contenue par la commande Batch dans un lot non transactionnel distinct. Si une commande échoue dans un lot non transactionnel, la commande Batch continue d’exécuter des commandes après l’échec de la commande. Une fois que la commande Batch tente d’exécuter toutes les commandes que la commande Batch contient, la commande Batch signale toutes les erreurs qui se sont produites.

Tous les résultats retournés par les commandes contenues dans une commande Batch sont retournés dans le même ordre dans lequel les commandes sont contenues 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 commande Batch contient une commande qui ne retourne pas de sortie, telle que la commande Lock et que cette commande s’exécute correctement, la commande Batch retourne un élément racine vide dans l’élément de résultats. L’élément racine vide garantit que chaque commande contenue dans une commande Batch peut être mise en correspondance avec l’élément racine 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 entière n’est pas terminée. 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 la restauration de l’intégralité de la commande Batch et de toutes les commandes contenant. 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 Execute pour la commande Batch contient un élément de résultats , qui à son tour contient un élément racine pour chaque commande d’exécution réussie contenue dans la commande Batch . Si une commande de la commande Batch ne peut pas être démarrée ou ne parvient pas à se terminer, 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 nontransactionnel sont retournés dans l’ordre dans lequel les commandes sont contenues dans la commande Batch et à mesure qu’elles sont retournées par chaque commande. Si aucune commande contenue dans la commande Batch ne peut être démarrée, la méthode Execute retourne une erreur SOAP qui contient une erreur pour la commande Batch . Si au moins une commande est démarrée avec succès, l’élément de retour de l’élément ExecuteResponse retourné par la méthode Execute pour la commande Batch contient un élément de résultats , qui à son tour contient un élément racine 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 parvient pas à se terminer, l’élément racine de cette commande ayant échoué contient un élément d’erreur décrivant l’erreur.

Notes

Tant qu’au moins une commande d’un lot nontransactionnel peut être démarrée, le lot nontransactionnel est considéré comme ayant réussi à s’exécuter, même si chaque commande contenue dans le lot nontransactionnel 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 des commandes incluses 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 n’est pas terminée dans la commande Batch . 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 commande Batch . Actuellement, SQL Server Analysis Services ne peut exécuter que des commandes de processus séquentielles contiguës en parallèle. Toute autre commande XMLA, telle que Create ou Alter, incluse dans la propriété Parallel est exécutée en série.

SQL Server Analysis Services tente d’exécuter toutes les commandes process incluses dans la propriété Parallel en parallèle, mais ne peut pas garantir que toutes les commandes de processus incluses peuvent être exécutées en parallèle. L’instance analyse chaque commande Process et, si l’instance détermine que la commande ne peut pas être exécutée en parallèle, la commande Process est exécutée en série.

Notes

Pour exécuter des commandes en parallèle, l’attribut Transaction de la commande Batch doit être défini sur true, car SQL Server Analysis Services prend en charge 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 nontransactionnel, une erreur se produit.

Limitation de l'exécution parallèle

Une instance SQL Server Analysis Services tente d’exécuter autant de commandes de processus en parallèle que possible, jusqu’aux limites de l’ordinateur sur lequel l’instance s’exécute. Vous pouvez limiter le nombre simultané de commandes de processus en définissant l’attribut maxParallel de la propriété Parallel sur 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 la séquence répertoriée :

  1. Créer

  2. Processus

  3. Alter

  4. Processus

  5. Processus

  6. Processus

  7. Supprimer

  8. Processus

  9. Processus

L’attribut maxParallel de cette propriété Parallel est défini sur 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 , la commande 6 ne peut pas s’exécuter en parallèle avec les commandes 4 et 5, car la propriété maxParallel a la valeur 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 commande Batch contient plusieurs propriétés et attributs facultatifs spécifiquement inclus pour prendre en charge le traitement de plusieurs projets SQL Server Analysis Services :

  • L’attribut ProcessAffectedObjects de la commande Batch indique si l’instance doit également traiter tous les objets qui nécessitent un retraitement suite à une commande Process incluse 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 commandes Process dans la commande Batch .

  • La propriété DataSource contient une liaison hors ligne pour une source de données utilisée par toutes les commandes Process dans la commande Batch .

  • La propriété DataSourceView contient une liaison hors ligne pour une vue de source de données utilisée par toutes les commandes Process de la commande Batch .

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

    Important

    Une commande Process ne peut pas inclure les propriétés Bindings, DataSourceView, 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 d’un modèle multidimensionnel (Analysis Services)
Développement avec XMLA dans Analysis Services