處理錯誤和警告 (XMLA)
當 XML for Analysis (XMLA) Discover 或 Execute 方法呼叫未執行、成功執行但產生錯誤或是警告,或是成功執行但傳回含有錯誤的結果時,就需要錯誤處理。
錯誤 |
報告 |
---|---|
XMLA 方法呼叫未執行 |
MicrosoftSQL ServerAnalysis Services 會傳回 SOAP 錯誤訊息,以包含失敗的詳細資料。 如需詳細資訊,請參閱<處理 SOAP 錯誤>一節。 |
方法呼叫成功時的錯誤或警告 |
Analysis Services 在包含方法呼叫結果的 root 元素之 Messages 屬性中,對於每個錯誤或警告分別包括 error 或 warning 元素。 如需詳細資訊,請參閱<處理錯誤和警告>一節。 |
方法呼叫成功時結果中的錯誤 |
Analysis Services 在方法呼叫結果的適當 Cell 或 row 元素中,分別包括錯誤或警告的內嵌 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>