Freigeben über


Behandeln von Fehlern und Warnungen (XMLA)

Eine Fehlerbehandlung ist notwendig, wenn ein XMLA-Aufruf (XML for Analysis) der Methoden Discover oder Execute nicht ausgeführt wird, erfolgreich ausgeführt wird, aber Fehler oder Warnungen generiert, erfolgreich ausgeführt wird, aber fehlerhafte Ergebnisse zurückgibt.

Fehler

Bericht

Der XMLA-Methodenaufruf wird nicht ausgeführt

Microsoft SQL Server Analysis Services gibt eine SOAP-Fehlernachricht mit den Einzelheiten zum Fehler zurück.

Weitere Informationen finden Sie im Abschnitt Behandeln von SOAP-Fehlern.

Fehler oder Warnungen bei erfolgreichem Methodenaufruf

Analysis Services enthält ein Error- oder Warning-Element für jeden Fehler oder jede Warnung in der Eigenschaft Messages des root-Elements, das die Ergebnisse des Methodenaufrufs enthält.

Weitere Informationen finden Sie im Abschnitt Behandeln von Fehlern und Warnungen.

Fehler im Ergebnis bei erfolgreichem Methodenaufruf

Analysis Services enthält ein Inline-error- oder warning-Element für den Fehler oder die Warnung innerhalb des entsprechendes Elements Cell oder Row der Ergebnisse des Methodenaufrufs.

Weitere Informationen finden Sie im Abschnitt Behandeln von Inlinefehlern und -warnungen.

Behandeln von SOAP-Fehlern

Analysis Services gibt einen SOAP-Fehler zurück, wenn die folgenden Situationen auftreten:

  • Die SOAP-Nachricht, die die XMLA-Methode enthält, ist nicht wohlgeformt oder konnte von der Analysis Services-Instanz nicht überprüft werden.

  • Eine Kommunikations- oder anderer Fehler ist in Bezug auf die SOAP-Nachricht, die die XMLA-Methode enthält, aufgetreten.

  • Die XMLA-Methode wurde nicht auf der Analysis Services-Instanz ausgeführt.

Die SOAP-Fehlercodes für XMLstartA beginnen mit „XMLForAnalysis“ gefolgt von einem Punkt und dem hexadezimalen HRESULT-Ergebniscode. Beispielsweise wird ein Fehlercode von „0x80000005“ formatiert als „XMLForAnalysis.0x80000005“. Weitere Informationen über das SOAP-Fehlerformat finden Sie unter „Soap Fault in the W3C Simple Object Access Protocol (SOAP) 1.1“.

Fehlercodeinformationen

Die folgende Tabelle zeigt die XMLA-Fehlercodeinformationen, die im Detailabschnitt der SOAP-Antwort enthalten sind. Die Spalten sind die Attribute eines Fehlers im Detailabschnitt eines SOAP-Fehlers.

Spaltenname

Typ

Beschreibung

Null zulässig1

ErrorCode

UnsignedInt

Rückgabecode, der den Erfolg oder das Scheitern der Methode angibt. Der Hexadezimalwert muss in einen UnsignedInt-Wert konvertiert werden.

Nein

WarningCode

UnsignedInt

Rückgabecode, der eine Warnbedingung angibt. Der Hexadezimalwert muss in einen UnsignedInt-Wert konvertiert werden.

Ja

Description

String

Fehler- oder Warnungstext und Beschreibung, die durch die Komponente zurückgegeben werden, die den Fehler erzeugt hat.

Ja

Source

String

Name der Komponente, die den Fehler oder die Warnung generiert hat.

Ja

HelpFile

String

Pfad oder URL zur Hilfedatei oder dem Thema, das den Fehler oder die Warnung beschreibt.

Ja

1 Gibt an, ob die Daten erforderlich sind und zurückgegeben werden müssen oder ob die Daten optional sind und eine NULL-Zeichenfolge zulässig ist, wenn die Spalte nicht anwendbar ist.

Im Folgenden finden Sie ein Beispiel für einen SOAP-Fehler, der auftrat, als ein Methodenaufruf fehlschlug:

<?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>

Behandeln von Fehlern und Warnungen

Analysis Services gibt die Messages-Eigenschaft im root-Element für einen Befehl zurück, wenn nach Ausführung des Befehls die folgenden Situationen auftreten:

  • Die Methode selber schlug nicht fehl, aber nach erfolgreicher Ausführung des Methodenaufrufs trat ein Fehler auf der Analysis Services-Instanz ein.

  • Die Analysis Services-Instanz gibt eine Warnung zurück, wenn der Befehl erfolgreich ist.

Die Messages-Eigenschaft folgt allen Eigenschaften, die im root-Element enthalten sind, und kann ein oder mehr Message-Elemente enthalten. Jedes Message-Element kann entweder ein einzelnes error- oder ein warning-Element enthalten, das entweder Fehler oder Warnungen beschreibt, die beim angegebenen Befehl aufgetreten sind.

Weitere Informationen über Fehler und Warnungen, die in der Messages-Eigenschaft enthalten sind, finden Sie unter Messages-Element (XMLA).

Behandeln von Fehlern während der Serialisierung

Wenn ein Fehler auftritt, nachdem die Analysis Services-Instanz bereits mit der Serialisierung der Ausgabe eines erfolgreich ausgeführten Befehls begonnen hat, gibt Analysis Services ein Exception-Element an einem anderen Namespace als dem Punkt des Fehlers zurück. Die Analysis Services-Instanz schließt dann alle geöffneten Elemente, sodass das an den Client gesendete XML-Dokument gültig ist. Die Instanz gibt darüber hinaus ein Messages-Element zurück, das eine Beschreibung des Fehlers enthält.

Behandeln von Inlinefehlern und -warnungen

Analysis Services gibt einen Inline-error oder eine Inline-warning für einen Befehl zurück, wenn die XMLA-Methode selbst nicht fehlgeschlagen ist, aber nach einem erfolgreichen XMLA-Methodenaufruf ein Fehler, der spezifisch für ein Datenelement in den von der Methoden zurückgegebenen Ergebnissen ist, auf der Analysis Services-Instanz aufgetreten ist.

Analysis Services gibt Inline-error und warning-Elemente an, wenn Probleme im Zusammenhang mit einer Zelle oder anderen Daten, die im root-Element enthalten sind, unter Verwendung des Datentyps MDDataSet auftreten. Hierzu können Sicherheits- oder Formatierungsfehler einer Zelle gehören. In diesen Fällen gibt Analysis Services ein error- oder ein warning-Element in der Cell oder im row-Element aus, das den Fehler oder die Warnung enthält.

Das folgende Beispiel veranschaulicht ein Resultset, das einen Fehler in dem Rowset enthält, das von der Execute-Methode über den Befehl Statement zurückgegeben wurde.

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