处理错误和警告 (XMLA)
如果 XML for Analysis (XMLA) Discover 或 Execute 方法调用未运行、成功运行但生成错误或警告,或成功运行但返回包含错误的结果,则需要错误处理。
错误 | 报表 |
---|---|
XMLA 方法调用不能运行 | Microsoft SQL Server Analysis Services返回一条 SOAP 错误消息,其中包含失败的详细信息。 有关详细信息,请参阅 处理 SOAP 错误部分。 |
方法调用运行成功,但生成了错误或警告 | Analysis Services 在包含方法调用结果的根元素的 Messages 属性中分别包含每个错误或警告的错误或警告元素。 有关详细信息,请参阅 处理错误和警告部分。 |
方法调用运行成功,但结果中包含错误 | Analysis Services 在方法调用结果的相应 Cell 或 warning row 元素中分别包含错误或警告的内联error 或元素。有关详细信息,请参阅 处理内联错误和警告部分。 |
处理 SOAP 错误
如果出现以下情况,Analysis Services 将返回 SOAP 错误:
包含 XMLA 方法的 SOAP 消息格式不正确,或者无法通过 Analysis Services 实例进行验证。
出现与包含 XMLA 方法的 SOAP 消息有关的通信错误或其他错误。
XMLA 方法未在 Analysis Services 实例上运行。
XMLstartA 的 SOAP 错误代码以“XMLForAnalysis”开头,后跟一个句号和十六进制的 HRESULT 结果代码。 例如,错误代码“0x80000005
”的格式为“XMLForAnalysis.0x80000005
”。 有关 SOAP 错误格式的详细信息,请参阅“W3C 简单对象访问协议 (SOAP) 1.1. 中的 SOAP 错误”。
错误代码信息
下表显示了 SOAP 响应详细信息部分包含的 XMLA 错误代码信息。 这些列为 SOAP 错误详细信息部分中所包含的错误的属性。
列名称 | 类型 | 说明 | 允许为 Null 1 |
---|---|---|---|
ErrorCode |
UnsignedInt |
指示方法是成功还是失败的返回代码。 十六进制值必须转换为 UnsignedInt 值。 |
否 |
WarningCode |
UnsignedInt |
指示警告条件的返回代码。 十六进制值必须转换为 UnsignedInt 值。 |
是 |
Description |
String |
由生成错误的组件返回的错误或警告的文本和说明。 | 是 |
Source |
String |
生成错误或警告的组件的名称。 | 是 |
HelpFile |
String |
指向介绍错误或警告的“帮助”文件或主题的路径或 URL。 | 是 |
1 指示数据是否必需且必须返回,或者数据是否为可选数据,如果列不适用,则允许使用 null 字符串。
下面列出了一个由于方法调用失败而出现的 SOAP 错误示例:
<?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>
处理错误和警告
如果在命令运行后出现以下情况,Analysis Services 将返回 Messages
命令的 元素中的 root
属性:
方法本身没有失败,但在方法调用成功后 Analysis Services 实例上发生了故障。
当命令成功时,Analysis Services 实例将返回警告。
属性出现在 元素中包含的所有其他属性之后,该属性可包含一个或多个 元素。 而每个 Message
元素又可以包含一个 error
或 warning
元素,这些元素分别描述了指定命令产生的所有错误或警告。
有关 属性中包含的 Messages
错误和警告的详细信息,请参阅 Messages 元素 (XMLA) 。
处理序列化期间发生的错误
如果在 Analysis Services 实例已开始序列化成功运行命令的输出后发生错误,Analysis Services 将在错误发生时返回不同命名空间中的 Exception 元素。 然后,Analysis Services 实例关闭所有打开的元素,以便发送到客户端的 XML 文档是有效的文档。 该实例还会返回包含错误说明的 Messages
元素。
处理内联错误和警告
如果 XMLA 方法本身未失败,Analysis Services 将返回内联 error
或 warning
命令,但在 XMLA 方法调用成功后,Analysis Services 在 Analysis Services 实例上返回了该方法返回的结果中特定于数据元素的错误。
如果发生特定于单元格或使用 MDDataSet 数据类型的元素中包含的root
其他数据的问题(例如单元格的安全错误或格式错误),Analysis Services 将提供内联error
warning
和元素。 在这些情况下,Analysis Services 在 或 warning
元素中Cell
分别返回error
包含错误或警告的 或 row
元素。
以下示例演示了一个结果集,该结果集在使用 Statement 命令从Execute
方法返回的行集中包含错误。
<return>
...
<root>
...
<CellData>
...
<Cell CellOrdinal="10">
<Value>
<Error>
<ErrorCode>2148497527</ErrorCode>
<Description>Security Error.</Description>
</Error>
</Value>
</Cell>
</CellData>
...
</root>
...
</return>