处理错误和警告 (XMLA)

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

错误 报表
XMLA 方法调用不能运行 Microsoft SQL Server SQL Server Analysis Services返回包含故障详细信息的 SOAP 错误消息。

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

有关详细信息,请参阅“ 处理错误和警告”部分。
方法调用运行成功,但结果中包含错误 SQL Server Analysis Services在方法调用结果的相应单元格元素中分别包括错误或警告的内联错误警告元素。

有关详细信息,请参阅“ 处理内联错误和警告”部分。

处理 SOAP 错误

当发生以下情况时,SQL Server Analysis Services返回 SOAP 错误:

  • 包含 XMLA 方法的 SOAP 消息格式不正确,或者SQL Server Analysis Services实例无法验证。

  • 出现与包含 XMLA 方法的 SOAP 消息有关的通信错误或其他错误。

  • XMLA 方法未在SQL Server 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 值。
说明 字符串 由生成错误的组件返回的错误或警告的文本和说明。
Source 字符串 生成错误或警告的组件的名称。
帮助文件 字符串 指向介绍错误或警告的“帮助”文件或主题的路径或 URL。

1 指示数据是必需数据,必须返回,还是数据是可选的,如果列不适用,则允许使用 null 字符串。

下面列出了一个由于方法调用失败而出现的 SOAP 错误示例:

<?xml version="1.0"?>  
   <SOAP-ENV:Envelope  
   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"  
   SOAP-ENV:encodingStyle="http://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>  

处理错误和警告

如果命令运行后出现以下情况,SQL Server Analysis Services返回命令元素中的 Messages 属性:

  • 方法本身没有失败,但在方法调用成功后,SQL Server Analysis Services实例上发生了失败。

  • SQL Server Analysis Services实例在命令成功时返回警告。

Messages 属性遵循元素包含的所有其他属性,并且可以包含一个或多个 Message 元素。 反过来,每个 Message 元素可以 包含一个 错误或 警告 元素,分别描述为指定命令发生的任何错误或警告。

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

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

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

处理内联错误和警告

如果 XMLA 方法本身未失败,则SQL Server Analysis Services返回命令的内联错误警告,但在 XMLA 方法调用成功后,该方法 SQL Server Analysis Services返回的结果中特定于数据元素的错误。

如果特定于单元格或其他使用 MDDataSet 数据类型包含在元素中的数据出现问题(例如单元格的安全错误或格式错误),则SQL Server Analysis Services提供内联错误警告元素。 在这些情况下,SQL Server Analysis Services分别返回包含错误或警告的单元格元素中的错误警告元素。

以下示例演示了一个结果集,其中包含使用 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 开发