共用方式為


執行批次作業 (XMLA)

您可以使用 XML for Analysis (XMLA) 中的 Batch 命令,使用單一 XMLA Execute 方法來執行多個 XMLA 命令。 您可以用單一交易或每個命令的個別交易,以序列或平行方式執行 Batch 命令中包含的多個命令。 您也可以在 命令中 Batch 指定離線系結和其他屬性,以處理多個 Microsoft SQL Server Analysis Services 物件。

執行交易式與非交易式批次命令

Batch 命令使用下列兩種方式之一來執行命令:

異動
Transaction如果命令的 Batch 屬性設定為 true,命令會 Batch 執行命令在單一交易交易批次中命令所包含的 Batch 所有命令。

如果交易批次中的任何命令失敗,Analysis Services 會在命令失敗且 Batch 命令立即結束之前執行的任何命令 Batch 復原。 Batch 命令中尚未執行的任何命令都不會被執行。 在 Batch 命令結束之後,Batch 命令會報告因為失敗的命令而發生的任何錯誤。

非交易
Transaction如果屬性設定為 false, Batch 命令會在 Batch 個別的交易非交易批次中執行命令所包含的每個命令。 如果非交易式批次中有任何命令失敗,Batch 命令會繼續執行失敗命令之後的命令。 在 Batch 命令嘗試執行 Batch 命令包含的所有命令之後,Batch 命令會報告所發生的任何錯誤。

所有由包含在 Batch 命令中的命令傳回的結果,都會按照 Batch 命令所含命令的相同順序來傳回。 Batch 命令傳回的結果,會因 Batch 命令是交易式或非交易式而異。

注意

Batch如果命令包含未傳回輸出的命令,例如Lock命令,而且該命令已成功執行, Batch 則命令會傳回結果元素內的空元素。 空的 root 元素可確保 Batch 命令中所含的每個命令,可與該命令結果的適當 root 元素相符。

從交易式批次結果傳回結果

在交易式批次內執行的命令之結果,必須等到整個 Batch 命令完成後才會傳回。 不在每個命令執行後便傳回結果,是因為交易式批次中任何失敗的命令,都會造成回復整個 Batch 命令及所含的命令。 如果所有命令都成功啟動並執行,則 命令 方法 BatchExecute 傳回的 ExecuteResponse元素傳回的傳回元素包含一個結果元素,接著會包含命令中每個成功執行命令的 Batch 一個 root 元素。 如果 Batch 命令中有任何命令無法啟動或是無法完成,Execute 方法會傳回 Batch 命令的 SOAP 錯誤,其中包含失敗命令的錯誤。

從非交易式批次結果傳回結果

在非交易式批次內執行的命令之結果,會在每個命令傳回結果時,按照 Batch 命令中所含的命令順序來傳回。 如果無法成功啟動 Batch 命令中所含的任何命令,Execute 方法會傳回 SOAP 錯誤,其中包含 Batch 命令的錯誤。 如果至少成功啟動一個命令,則 return 命令的 ExecuteResponse 方法所傳回之 Execute 元素的 Batch 元素,會包含一個 results 元素,而其中會為 root 命令所含的每個命令,各包含一個 Batch 元素。 如果無法啟動或無法完成非交易批次中的一或多個命令, root 該失敗命令的 元素會包含描述錯誤的 錯誤 元素。

注意

只要在非交易式批次中至少有一個命令可以啟動,便會將非交易式批次視為已成功執行,即使在非交易式批次中所含的每個命令,都在 Batch 命令的結果中傳回錯誤,亦然。

使用序列和平行執行

您可以使用 Batch 命令,以序列或平行方式,執行包含的命令。 以序列方式執行命令時,Batch 命令中所含的下一個命令必須等到 Batch 命令中目前執行的命令完成時才能啟動。 以平行方式執行命令時,Batch 命令可以同時執行多個命令。

若要平行執行命令,請將要平行執行的命令新增至命令的 BatchParallel屬性。 Analysis Services 目前只能平行執行連續、循序 的 Process 命令。 屬性中包含的任何其他 XMLA 命令,例如 CreateAlter,都是 Parallel 以序列方式執行。

Analysis Services 會嘗試平行執行 屬性中包含的 Parallel 所有 Process 命令,但無法保證可以平行執行所有包含 Process 的命令。 執行個體會分析每個 Process 命令,而且如果執行個體判斷無法平行執行命令,就會序列執行 Process 命令。

注意

若要平行執行命令,命令的 Batch 屬性必須設定為 true, Transaction 因為 Analysis Services 在每個連接只支援一個作用中交易,且非交易批次會在個別交易中執行每個命令。 如果您在非交易式批次中包含 Parallel 屬性,就會發生錯誤。

限制平行執行

Analysis Services 實例會嘗試以平行方式執行多個 Process 命令,上限為實例執行所在電腦的限制。 您可以將 Process 屬性 (Property) 的 maxParallel 屬性 (Attribute),設定為可以平行執行之 Parallel 命令的上限,以限制並行執行的 Process 命令數目。

例如,Parallel 屬性依序包含下列命令:

  1. Create

  2. Process

  3. Alter

  4. Process

  5. Process

  6. Process

  7. Delete

  8. Process

  9. Process

maxParalle 屬性 (Property) 的 Parallell 屬性 (Attribute) 是設定為 2。 因此,執行個體會依照下列清單執行上列命令:

  • 命令 1 會序列執行,因為命令 1 是 Create 命令,而且只有 Process 命令可以平行執行。

  • 命令 2 會在命令 1 完成之後依序執行。

  • 命令 3 會在命令 2 完成之後以序列方式執行。

  • 命令 4 和 5 會在命令 3 完成之後平行執行。 雖然命令 6 也是 Process 命令,不過,命令 6 無法與命令 4 和 5 一起平行執行,因為 maxParallel 屬性是設定為 2。

  • 命令 6 會在命令 4 和 5 完成之後序列執行。

  • 命令 7 會在命令 6 完成之後序列執行。

  • 命令 8 與 9 會在命令 7 完成之後平行執行。

使用 Batch 命令處理物件

此命令 Batch 包含數個選擇性屬性和屬性,專門用來支援處理多個 Analysis Services 專案:

  • ProcessAffectedObjects 命令的 Batch 屬性指出執行個體是否要在 Process 命令中的 Batch 命令處理指定的物件之後,也處理需要重新處理的物件。

  • Bindings屬性包含命令中 Batch 所有 Process 命令所使用的離線系結集合。

  • DataSource屬性包含命令中 Batch 所有 Process 命令所使用的資料來源離線系結。

  • DataSourceView屬性包含命令中 Batch 所有 Process 命令所使用的資料來源檢視離線系結。

  • ErrorConfiguration屬性會指定命令處理命令所含 Batch 所有 Process 命令所遇到的錯誤的方式 Batch

    重要

    如果 Process 命令是包含在 Bindings 命令中,則 DataSource 命令無法包括 DataSourceViewErrorConfigurationProcessBatch 屬性。 如果您必須為 Process 命令指定這些屬性,請在包含 Batch 命令的 Process 命令的對應屬性中提供必要的資訊。

另請參閱

Batch 元素 (XMLA)
Process 元素 (XMLA)
多維度模型物件處理
在 Analysis Services 中使用 XMLA 進行開發