共用方式為


處理錯誤和警告 (XMLA)

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

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

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

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

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

處理 SOAP 錯誤

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

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

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

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

以 "XMLForAnalysis" 開頭的 XMLstartA 之 SOAP 錯誤碼,後面會接著句號和十六進位的 HRESULT 結果碼。 例如,0x80000005 的錯誤碼會格式化為 "XMLForAnalysis.0x80000005"。 如需有關 SOAP 錯誤格式的詳細資訊,請參閱 W3C 簡易物件存取通訊協定 (SOAP) 1.1 中的 Soap 錯誤。

錯誤碼資訊

下表將顯示包含在 SOAP 回應之詳細資料區段中的 XMLA 錯誤碼資訊。 資料行是在 SOAP 錯誤的詳細資料區段中某個錯誤的屬性。

資料行名稱 類型 描述 允許 Null1
ErrorCode UnsignedInt 傳回指出方法成功或失敗的代碼。 必須將十六進位值轉換成 UnsignedInt 值。 No
WarningCode UnsignedInt 傳回指出警告狀況的代碼。 必須將十六進位值轉換成 UnsignedInt 值。 Yes
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 Element (XMLA)

處理序列化期間的錯誤。

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

處理內嵌錯誤和警告

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

如果發生MDDataSet資料類型之元素內 root 含之資料的特定問題,Analysis Services 會提供內嵌 errorwarning 元素,例如資料格的安全性錯誤或格式化錯誤。 在這些情況下,Analysis Services 會分別傳回 errorwarningrow 專案中包含錯誤或警告的 Cell 或 元素。

下列範例說明結果集,其中包含使用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 進行開發