Gestion des erreurs et des avertissements (XMLA)

La gestion des erreurs s'avère nécessaire lorsqu'un appel de méthode Discover ou Execute XMLA (XML for Analysis) ne s'exécute pas, s'exécute correctement mais génère des erreurs ou des avertissements ou s'exécute correctement mais retourne des resultats qui contiennent des erreurs.

Erreur

Signalement

L'appel de méthode XMLA ne s'exécute pas

MicrosoftSQL ServerAnalysis Services retourne un message d'erreur SOAP qui contient les détails de l'échec.

Pour plus d'informations, consultez la section Gestion des erreurs SOAP.

Erreurs ou avertissements sur un appel de méthode ayant abouti

Analysis Services inclut un élément error ou warning pour, respectivement, chaque erreur ou avertissement dans la propriété Messages de l'élément root qui contient les résultats de l'appel de méthode.

Pour plus d'informations, consultez la section Gestion des erreurs et des avertissements.

Erreurs dans les résultats d'un appel de méthode ayant abouti

Analysis Services inclut un élément error ou warning inséré pour, respectivement, l'erreur ou l'avertissement dans l'élément Cell ou row approprié des résultats de l'appel de méthode.

Pour plus d'informations, consultez la section Gestion des erreurs et des avertissements insérés.

Gestion des erreurs SOAP

Analysis Services retourne une erreur SOAP lorsque les situations suivantes se présentent :

  • le message SOAP qui contient la méthode XMLA n'était pas correctement formé ou n'a pas pu être validé par l'instance Analysis Services ;

  • une communication ou une autre erreur s'est produite impliquant le message SOAP qui contient la méthode XMLA ;

  • la méthode XMLA ne s'est pas exécutée sur l'instance Analysis Services.

Les codes d'erreur SOAP pour XMLstartA commencent par « XMLForAnalysis », suivis d'un point et du code de résultat hexadécimal HRESULT. Par exemple, le code d'erreur « 0x80000005 » prend la forme « XMLForAnalysis.0x80000005 ». Pour plus d'informations sur le format d'erreur SOAP, consultez la rubrique consacrée aux erreurs Soap dans le document « Simple Object Access Protocol (SOAP) 1.1 » du W3C (en anglais).

Informations de code d'erreur

Le tableau suivant présente les informations de code d'erreur XMLA contenues dans la section détaillée de la réponse SOAP. Les colonnes représentent les attributs d'une erreur dans la section détaillée d'une erreur SOAP.

Nom de la colonne

Type

Description

Null autorisé1

ErrorCode

UnsignedInt

Code de retour qui indique le succès ou l'échec de la méthode. La valeur hexadécimale doit être convertie en valeur UnsignedInt.

Non

WarningCode

UnsignedInt

Code de retour qui indique une condition d'avertissement. La valeur hexadécimale doit être convertie en valeur UnsignedInt.

Oui

Description

String

Texte et description de l'erreur ou de l'avertissement retourné par le composant qui a généré l'erreur.

Oui

Source

String

Nom du composant qui a généré l'erreur ou l'avertissement.

Oui

HelpFile

String

Chemin d'accès ou URL menant au fichier ou à la rubrique d'aide qui décrit l'erreur ou l'avertissement.

Oui

1 Indique si les données sont requises et doivent être retournées, ou si les données sont facultatives et une chaîne Null autorisée si la colonne ne s'applique pas.

Voici un exemple d'erreur SOAP qui s'est produite à l'occasion d'un échec d'appel de méthode :

<?xml version="1.0"?>
   <SOAP-ENV:Envelope
   xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
   SOAP-ENV:encodingStyle="https://schemas.xmlsoap.org/soap/encoding/">
      <SOAP-ENV:Fault>
         <faultcode>XMLAnalysisError.0x80000005</faultcode>
         <faultstring>The XML for Analysis provider encountered an error.</faultstring>
         <faultactor>XML for Analysis Provider</faultactor>
         <detail>
<Error
ErrorCode="2147483653"
Description="An unexpected error has occurred."
Source="XML for Analysis Provider"
HelpFile="" />
         </detail>
      </SOAP-ENV:Fault>
</SOAP-ENV:Envelope>

Gestion des erreurs et des avertissements

Analysis Services retourne la propriété Messages dans l'élément root d'une commande si les situations suivantes se présentent à la suite de l'exécution de cette commande :

  • la méthode proprement dite n'a pas échoué, mais un échec s'est produit dans l'instance Analysis Services après que l'appel de méthode a abouti ;

  • l'instance Analysis Services retourne un avertissement lorsque la commande aboutit.

La propriété Messages suit toutes les autres propriétés contenues dans l'élément root et peut contenir un ou plusieurs éléments Message. De leur côté, les éléments Message peut chacun contenir un élément error ou warning décrivant, respectivement, les erreurs ou les avertissements qui se sont produits pour la commande spécifiée.

Pour plus d'informations sur les erreurs et les avertissements contenus dans la propriété Messages, consultez Élément Messages (XMLA).

Gestion des erreurs pendant la sérialisation

Si une erreur se produit alors que l'instance Analysis Services a déjà commencé à sérialiser la sortie d'une commande correctement exécutée, Analysis Services retourne un élément Exception dans un espace de noms différent au moment de l'erreur. L'instance Analysis Services ferme alors tous les éléments ouverts de telle sorte que le document XML envoyé au client soit un document valide. L'instance retourne également un élément Messages qui contient la description de l'erreur.

Gestion des erreurs et des avertissements insérés

Analysis Services retourne un élément inséré error ou warning pour une commande si la méthode XMLA proprement dite n'a pas échoué, mais qu'une erreur spécifique à un élément de données contenu dans les résultats retournés par la méthode s'est produite dans l'instance Analysis Services après que l'appel de méthode XMLA a abouti.

Analysis Services fournit des éléments insérés error et warning si des problèmes spécifiques à une cellule ou à d'autres données contenues dans un élément root utilisant le type de données MDDataSet se sont produits, tels qu'une erreur de sécurité ou une erreur de mise en forme pour une cellule. Dans ces cas, Analysis Services retourne un élément error ou warning dans l'élément Cell ou row qui contient, respectivement, l'erreur ou l'avertissement.

L'exemple suivant illustre un jeu de résultats qui contient une erreur dans l'ensemble de lignes retourné par une méthode Execute utilisant la commande Statement.

<return>
   ...
   <root>
      ...
      <CellData>
      ...
         <Cell CellOrdinal="10">
            <Value>
               <Error>
                  <ErrorCode>2148497527</ErrorCode> 
                  <Description>Security Error.</Description> 
               </Error>
            </Value>
         </Cell>
      </CellData>
      ...
   </root>
   ...
</return>