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.
Vous pouvez utiliser la commande Batch dans XML for Analysis (XMLA) pour exécuter plusieurs commandes XMLA à l’aide d’une méthode d’exécution XMLA unique. Vous pouvez exécuter plusieurs commandes contenues dans la Batch commande 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 Batch commande pour le traitement de plusieurs objets Microsoft SQL Server Analysis Services.
Exécution de commandes par lots transactionnelles et nontransactionnelles
La Batch commande exécute les commandes de l’une des deux manières suivantes :
Transactionnelle
Si l’attribut de la Batch commande a la Transaction valeur true, la Batch commande exécute toutes les commandes contenues par la Batch commande dans un lot transactionnel unique.
Si une commande échoue dans un lot transactionnel, Analysis Services annule toutes les commandes de la Batch commande exécutée avant l’échec de la commande et la Batch commande se termine immédiatement. Les commandes de la Batch commande qui n’ont pas encore été exécutées ne sont pas exécutées. Une fois la Batch commande terminée, la Batch commande signale les erreurs qui se sont produites pour la commande ayant échoué.
Nontransactionnelle
Si l’attribut a la Transaction valeur false, la Batch commande exécute chaque commande contenue par la Batch commande dans un lot transactionnel distinct . Si une commande échoue dans un lot nontransactionnel, la Batch commande continue d’exécuter des commandes après l’échec de la commande. Une fois que la Batch commande tente d’exécuter toutes les commandes que la commande contient, la BatchBatch commande signale toutes les erreurs qui se sont produites.
Tous les résultats retournés par les commandes contenues dans une Batch commande sont retournés dans le même ordre dans lequel les commandes sont contenues dans la Batch commande. Les résultats retournés par une Batch commande varient selon que la Batch commande est transactionnelle ou nontransactionnelle.
Remarque
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 de résultats. L’élément vide root garantit que chaque commande contenue dans une Batch commande peut être mise en correspondance avec l’élément approprié root pour les résultats de cette commande.
Retour de résultats à partir des résultats de lot transactionnel
Les résultats des commandes exécutées dans un lot transactionnel ne sont pas retournés tant que la commande entière Batch 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 la commande entière Batch et de toutes les commandes contenant des commandes. Si toutes les commandes démarrent et s’exécutent correctement, l’élément de retour de l’élément ExecuteResponse retourné par la Execute méthode de la Batch commande contient un élément de résultats , qui contient à son tour un root élément pour chaque commande d’exécution réussie contenue dans la Batch commande. Si une commande de la Batch commande ne peut pas être démarrée ou ne parvient pas à se terminer, la Execute méthode retourne une erreur SOAP pour la Batch commande qui contient l’erreur de la commande qui a échoué.
Retour de résultats à partir de résultats de lots nontransactionnels
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 Batch commande et à mesure qu’elles sont retournées par chaque commande. Si aucune commande contenue dans la Batch commande ne peut être démarrée, la Execute méthode retourne une erreur SOAP qui contient une erreur pour la Batch commande. Si au moins une commande est démarrée, l’élément return de l’élément ExecuteResponse retourné par la Execute méthode de la Batch commande contient un results élément, qui contient à son tour un root élément pour chaque commande contenue dans la Batch commande. Si une ou plusieurs commandes d’un lot nontransactionnel ne peuvent pas être démarrées ou ne peuvent pas être terminées, l’élément pour lequel la root commande a échoué contient un élément d’erreur décrivant l’erreur.
Remarque
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 correctement, même si chaque commande contenue dans le lot nontransactionnel retourne une erreur dans les résultats de la Batch commande.
Utilisation de l’exécution série et parallèle
Vous pouvez utiliser la Batch commande 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 Batch commande ne peut pas démarrer tant que la Batch commande en cours d’exécution n’est pas terminée. Lorsque les commandes sont exécutées en parallèle, plusieurs commandes peuvent être exécutées simultanément par la Batch commande.
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 peut exécuter uniquement 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 Process commande et, si l’instance détermine que la commande ne peut pas être exécutée en parallèle, la Process commande est exécutée en série.
Remarque
Pour exécuter des commandes en parallèle, l’attribut Transaction de la Batch commande doit être défini sur true, car Analysis Services ne prend en charge qu’une seule transaction active par connexion et les lots nontransactionnels exécutent chaque commande dans une transaction distincte. Si vous incluez la Parallel propriété dans un lot nontransactionnel, une erreur se produit.
Limitation de l’exécution parallèle
Une instance Analysis Services tente d’exécuter autant de Process commandes en parallèle que possible, jusqu’aux limites de l’ordinateur sur lequel l’instance s’exécute. Vous pouvez limiter le nombre de commandes en cours d’exécution Process simultanée en définissant l’attribut maxParallel de la Parallel propriété sur une valeur indiquant le nombre maximal de Process commandes pouvant être exécutées en parallèle.
Par exemple, une Parallel propriété contient les commandes suivantes dans la séquence répertoriée :
CreateProcessAlterProcessProcessProcessDeleteProcessProcess
L’attribut maxParallel de cette Parallel propriété 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
Createcommande et seulesProcessles commandes peuvent être exécutées en parallèle.La commande 2 s’exécute en série une fois la commande 1 terminée.
La commande 3 s’exécute en série une fois la commande 2 terminée.
Les commandes 4 et 5 s’exécutent en parallèle une fois la commande 3 terminée. Bien que la commande 6 soit également une
Processcommande, la commande 6 ne peut pas s’exécuter en parallèle avec les commandes 4 et 5, car lamaxParallelpropriété est définie sur 2.La commande 6 s’exécute en série une fois les commandes 4 et 5 terminées.
La commande 7 s’exécute en série une fois la commande 6 terminée.
Les commandes 8 et 9 s’exécutent en parallèle une fois la commande 7 terminée.
Utilisation de la commande Batch pour traiter des 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
ProcessAffectedObjectsde laBatchcommande indique si l’instance doit également traiter un objet qui nécessite un retraitement à la suite d’uneProcesscommande incluse dans laBatchcommande qui traite un objet spécifié.La propriété Bindings contient une collection de liaisons hors ligne utilisées par toutes les
Processcommandes de laBatchcommande.La propriété DataSource contient une liaison hors ligne pour une source de données utilisée par toutes les
Processcommandes de laBatchcommande.La propriété DataSourceView contient une liaison hors ligne pour une vue de source de données utilisée par toutes les
Processcommandes de laBatchcommande.La propriété ErrorConfiguration spécifie la façon dont la
Batchcommande gère les erreurs rencontrées par toutes lesProcesscommandes contenues dans laBatchcommande.Important
Une
Processcommande ne peut pas inclure les propriétés,DataSourceouDataSourceViewErrorConfigurationlesBindingspropriétés, si laProcesscommande est contenue dans uneBatchcommande. Si vous devez spécifier ces propriétés pour uneProcesscommande, fournissez les informations nécessaires dans les propriétés correspondantes de laBatchcommande qui contient laProcesscommande.
Voir aussi
Batch, élément (XMLA)
Process, élément (XMLA)
Traitement d’objet de modèle multidimensionnel
Développement avec XMLA dans Analysis Services