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 |
MicrosoftSQL ServerAnalysis 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>
Siehe auch