共用方式為


執行批次作業 (XMLA)

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

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

Batch命令會以下列兩種方式之一執行命令:

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

如果交易式批次中的任何命令失敗,SQL Server Analysis Services回復在命令失敗之前執行的 Batch 命令中的任何命令,並立即結束Batch命令。 尚未執行 之 Batch 命令中的任何命令都不會執行。 Batch命令結束之後,Batch命令會報告失敗命令發生的任何錯誤。

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

Batch命令中包含的命令所傳回的所有結果,都會以包含在 Batch命令中的相同順序傳回。 Batch命令傳回的結果會根據Batch命令是交易式還是非交易式而有所不同。

注意

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

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

除非完成整個 Batch 命令,否則不會傳回交易式批次內執行命令的結果。 每個命令執行之後都不會傳回結果,因為交易式批次內失敗的任何命令都會造成整個 Batch 命令以及所有包含命令的回復。 如果所有命令都成功啟動並執行,Batch命令的Execute方法所傳回的 ExecuteResponse元素傳回的傳回元素會包含一個結果元素,接著會針對Batch命令中每個成功執行的命令包含一個元素。 如果 Batch 命令中的任何命令無法啟動或無法完成, Execute 方法會針對 Batch 命令傳回 SOAP 錯誤,其中包含失敗命令的錯誤。

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

命令在非交易批次內執行的結果會依照 命令包含在 Batch 命令內的順序傳回,以及每個命令所傳回的順序。 如果 Batch 命令中沒有任何命令可以成功啟動, Execute 方法會傳回 SOAP 錯誤,其中包含 Batch 命令的錯誤。 如果已成功啟動一個命令,則 Batch命令的 Execute方法所傳回的 ExecuteResponse元素傳回的傳回元素包含一個結果元素,接著會針對Batch命令中包含的每個命令包含一個元素。 如果無法啟動或無法完成非交易批次中的一或多個命令,該失敗命令的 元素會包含描述錯誤的 錯誤 元素。

注意

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

使用序列和平行執行

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

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

SQL Server Analysis Services嘗試平行執行Parallel屬性中包含的所有Process命令,但無法保證所有包含的進程命令都可以平行執行。 實例會分析每個 Process 命令,如果實例判斷無法平行執行命令, 則 Process 命令會以序列方式執行。

注意

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

限制平行執行

SQL Server Analysis Services 實例會嘗試盡可能平行執行多個Process命令,最多到實例執行所在電腦的限制。 您可以將Parallel屬性的maxParallel屬性設定為值,指出可以平行執行的Process命令數目上限,以限制並存執行Process命令的數目。

例如, Parallel 屬性包含所列序列中的下列命令:

  1. 建立

  2. 處理

  3. 改變

  4. 處理

  5. 處理

  6. 處理

  7. 刪除

  8. 處理

  9. 處理

這個Parallel屬性的maxParallel 屬性會設定為 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命令包含數個選擇性屬性和屬性,專門用來支援處理多個SQL Server Analysis Services專案:

  • Batch命令的ProcessAffectedObjects屬性會指出實例是否也應該處理任何需要重新處理的物件,因為Batch命令中包含Process命令來處理指定的物件。

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

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

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

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

    重要

    如果Process命令包含在Batch命令中,則 Process命令不能包含BindingsDataSourceViewErrorConfiguration屬性。 如果您必須為Process命令指定這些屬性,請在包含Process命令的Batch命令對應屬性中提供必要資訊。

另請參閱

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