共用方式為


處理錯誤和警告 (XMLA)

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

錯誤

報告

XMLA 方法呼叫未執行

Microsoft SQL Server Analysis Services 會傳回 SOAP 錯誤訊息,以包含失敗的詳細資料。

如需詳細資訊,請參閱<處理 SOAP 錯誤>一節。

方法呼叫成功時的錯誤或警告

Analysis Services 在包含方法呼叫結果的 root 元素之 Messages 屬性中,對於每個錯誤或警告分別包括 errorwarning 元素。

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

方法呼叫成功時結果中的錯誤

Analysis Services 在方法呼叫結果的適當 Cellrow 元素中,分別包括錯誤或警告的內嵌 error 或 warning 元素。

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

處理 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 錯誤的詳細資料區段中某個錯誤的屬性。

資料行名稱

類型

說明

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 會傳回 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>