共用方式為


處理錯誤與警告(XMLA)

當 XML for Analysis (XMLA) DiscoverExecute 方法呼叫未執行、成功執行但產生錯誤或警告,或成功執行,但傳回包含錯誤的結果時,需要錯誤處理。

錯誤 報告
XMLA 方法呼叫不會執行 Microsoft SQL Server Analysis Services 會傳回 SOAP 錯誤訊息,其中包含失敗的詳細數據。

如需詳細資訊,請參閱 處理SOAP錯誤一節。
成功方法呼叫時發生錯誤或警告 Analysis Services 在元素的 Messages 屬性中,分別包含每個錯誤或警告的錯誤或警告專案,其中包含方法呼叫的結果。

如需詳細資訊,請參閱 處理錯誤和警告一節。
成功方法呼叫結果的錯誤 Analysis Services 在方法呼叫結果的適當 Cellrow 元素內,分別包含錯誤或警告的內嵌errorwarning或元素。

如需詳細資訊,請參閱 處理內嵌錯誤和警告一節。

處理SOAP錯誤

當發生下列情況時,Analysis Services 會傳回 SOAP 錯誤:

  • 包含 XMLA 方法的 SOAP 訊息格式不正確,或無法由 Analysis Services 實例驗證。

  • 包含 XMLA 方法的 SOAP 訊息發生通訊或其他錯誤。

  • XMLA 方法未在 Analysis Services 實例上執行。

XMLstartA 的 SOAP 錯誤碼會以 「XMLForAnalysis」 開頭,後面接著句號和十六進位 HRESULT 結果碼。 例如,“0x80000005” 的錯誤碼會格式化為 “XMLForAnalysis.0x80000005”。 如需SOAP錯誤格式的詳細資訊,請參閱 W3C Simple Object Access Protocol (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 會傳回 Messages 命令元素 root 中的 屬性:

  • 方法本身並未失敗,但在方法呼叫成功之後,Analysis Services 實例上發生失敗。

  • 當命令成功時,Analysis Services 實例會傳回警告。

屬性 Messages 會遵循 元素所包含的 root 所有其他屬性,而且可以包含一或多個 Message 元素。 接著,每個Message元素都可以包含單一或warning專案error,分別描述指定命令所發生的任何錯誤或警告。

如需 屬性中包含的 Messages 錯誤和警告的詳細資訊,請參閱 Messages 元素 (XMLA)

在串行化期間處理錯誤

如果 Analysis Services 實例已經開始串行化成功執行命令的輸出之後發生錯誤,Analysis Services 會在錯誤發生時傳回不同命名空間中的 Exception 元素。 Analysis Services 實例接著會關閉所有開啟的專案,以便傳送至用戶端的 XML 檔是有效的檔。 實例也會傳 Messages 回包含錯誤描述的專案。

處理內嵌錯誤和警告

如果 XMLA 方法本身未失敗,Analysis Services 會傳回內嵌errorwarning或命令,但在 XMLA 方法呼叫成功之後,在 Analysis Services 實例上傳回之方法所傳回之結果中數據元素的特定錯誤。

如果儲存格的特定問題或使用 MDDataSet 資料類型包含在元素內root的其他數據,Analysis Services 會提供內嵌errorwarning元素,例如數據格的安全性錯誤或格式化錯誤。 在這些情況下,Analysis Services 會 errorwarningCell 分別傳回 或 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 進行開發