当 XML for Analysis (XMLA) 发现 或 执行 方法调用未运行、成功运行但生成错误或警告或成功运行,但返回包含错误的结果时,需要错误处理。
错误 | 报告 |
---|---|
XMLA 方法调用未运行 | Microsoft SQL Server Analysis Services 返回包含失败详细信息的 SOAP 错误消息。 有关详细信息,请参阅“ 处理 SOAP 错误”部分。 |
成功方法调用时出现错误或警告 | Analysis Services 在包含方法调用结果的根元素的 Messages 属性中分别包含每个错误或警告的错误或警告元素。 有关详细信息,请参阅“ 处理错误和警告”部分。 |
成功方法调用结果中的错误 | Analysis Services 在方法调用结果的相应单元格或行元素中分别包含错误或警告的内联error warning 或元素。有关详细信息,请参阅“ 处理内联错误和警告”部分。 |
处理 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 错误的详细信息部分中错误的属性。
列名称 | 类型 | DESCRIPTION | 允许为 Null1 |
---|---|---|---|
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 实例将返回警告。
该 Messages
属性遵循元素包含 root
的所有其他属性,并且可以包含一个或多个 Message
元素。 反过来,每个Message
元素可以包含一个或warning
一个error
元素,分别描述指定命令发生的任何错误或警告。
有关属性中包含的Messages
错误和警告的详细信息,请参阅 Messages 元素(XMLA)。
在序列化期间处理错误
如果 Analysis Services 实例已开始序列化成功运行命令的输出之后发生错误,Analysis Services 将在错误发生时返回不同命名空间中的 异常 元素。 然后,Analysis Services 实例关闭所有打开的元素,以便发送到客户端的 XML 文档是有效的文档。 该实例还返回一个 Messages
包含错误说明的元素。
处理内联错误和警告
如果 XMLA 方法本身未失败,则 Analysis Services 返回内联error
warning
或命令,但在 XMLA 方法调用成功后,该方法返回的结果中特定于数据元素的错误。
如果特定于单元格或其他数据(使用 MDDataSet 数据类型的元素中包含的root
问题)出现,Analysis Services 会提供内联error
和warning
元素,例如单元格的安全错误或格式设置错误。 在这些情况下,Analysis Services 分别返回包含错误或警告的元素中的Cell
row
或error
warning
元素。
下面的示例演示了一个结果集,其中包含使用 Statement 命令从Execute
方法返回的行集中的错误。
<return>
...
<root>
...
<CellData>
...
<Cell CellOrdinal="10">
<Value>
<Error>
<ErrorCode>2148497527</ErrorCode>
<Description>Security Error.</Description>
</Error>
</Value>
</Cell>
</CellData>
...
</root>
...
</return>