处理错误和警告 (XMLA)

当 XML for Analysis (XMLA) DiscoverExecute 方法调用不能运行、虽然运行成功但生成了错误或警告,或者虽然运行成功但返回了包含错误的结果时,需要进行错误处理。

错误

报告

XMLA 方法调用不能运行

MicrosoftSQL ServerAnalysis Services 返回包含失败详细信息的 SOAP 错误消息。

有关详细信息,请参阅处理 SOAP 错误一节。

方法调用运行成功,但生成了错误或警告

Analysis Services 会在该方法调用结果的 Root 元素的 Messages 属性中,分别包含每一个错误或警告的 errorwarning 元素。

有关详细信息,请参阅处理错误和警告一节。

方法调用运行成功,但结果中包含错误

Analysis Services 会在方法调用结果的相应 Cell or row 元素中,分别包含错误或警告的内联 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 错误详细信息部分中所包含的错误的属性。

列名

类型

说明

是否允许 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 会在该命令的 root 元素中返回 Messages 属性:

  • 该方法本身没有失败,但在该方法调用成功后,Analysis Services 实例上出现了错误。

  • Analysis Services 实例在该命令成功后返回一个警告。

Messages 属性出现在 root 元素中包含的所有其他属性之后,该属性可包含一个或多个 Message 元素。而每个 Message 元素又可以包含一个 error 或 warning 元素,这些元素分别描述了指定命令产生的所有错误或警告。

有关 Messages 属性中包含的错误和警告的详细信息,请参阅 Messages 元素 (XMLA)

处理序列化期间发生的错误

如果在 Analysis Services 实例已开始对成功运行的命令的输出进行序列化后发生错误,则 Analysis Services 会在错误发生时在其他命名空间中返回 Exception 元素。Analysis Services 实例随后会关闭所有已打开的元素,以确保发送到客户端的 XML 文档为有效文档。该实例还会返回包含错误说明的 Messages 元素。

处理内联错误和警告

如果 XMLA 方法本身没有失败,但在 XMLA 方法调用成功后,Analysis Services 实例上出现了特定于该方法返回结果中的数据元素的错误,则 Analysis Services 会为命令返回内联 error 或 warning。

如果出现了特定于使用 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>