处理错误和警告 (XMLA)

如果 XML for Analysis (XMLA) DiscoverExecute 方法调用未运行、成功运行但生成错误或警告,或成功运行但返回包含错误的结果,则需要错误处理。

错误 报表
XMLA 方法调用不能运行 Microsoft SQL Server Analysis Services返回一条 SOAP 错误消息,其中包含失败的详细信息。

有关详细信息,请参阅 处理 SOAP 错误部分。
方法调用运行成功,但生成了错误或警告 Analysis Services 在包含方法调用结果的元素的 Messages 属性中分别包含每个错误或警告的错误或警告元素。

有关详细信息,请参阅 处理错误和警告部分。
方法调用运行成功,但结果中包含错误 Analysis Services 在方法调用结果的相应 Cellwarningrow 元素中分别包含错误或警告的内联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 元素又可以包含一个 errorwarning 元素,这些元素分别描述了指定命令产生的所有错误或警告。

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

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

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

处理内联错误和警告

如果 XMLA 方法本身未失败,Analysis Services 将返回内联 errorwarning 命令,但在 XMLA 方法调用成功后,Analysis Services 在 Analysis Services 实例上返回了该方法返回的结果中特定于数据元素的错误。

如果发生特定于单元格或使用 MDDataSet 数据类型的元素中包含的root其他数据的问题(例如单元格的安全错误或格式错误),Analysis Services 将提供内联errorwarning和元素。 在这些情况下,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>  

另请参阅

在 Analysis Services 中使用 XMLA 开发