執行批次作業 (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
命令及所含的命令。 如果所有命令都成功啟動並執行,則 命令 方法 Batch
所 Execute
傳回的 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
命令可以同時執行多個命令。
若要平行執行命令,請將要平行執行的命令新增至命令的 Batch
Parallel屬性。 Analysis Services 目前只能平行執行連續、循序 的 Process 命令。 屬性中包含的任何其他 XMLA 命令,例如 Create 或 Alter,都是 Parallel
以序列方式執行。
Analysis Services 會嘗試平行執行 屬性中包含的 Parallel
所有 Process
命令,但無法保證可以平行執行所有包含 Process
的命令。 執行個體會分析每個 Process
命令,而且如果執行個體判斷無法平行執行命令,就會序列執行 Process
命令。
注意
若要平行執行命令,命令的 Batch
屬性必須設定為 true, Transaction
因為 Analysis Services 在每個連接只支援一個作用中交易,且非交易批次會在個別交易中執行每個命令。 如果您在非交易式批次中包含 Parallel
屬性,就會發生錯誤。
限制平行執行
Analysis Services 實例會嘗試以平行方式執行多個 Process
命令,上限為實例執行所在電腦的限制。 您可以將 Process
屬性 (Property) 的 maxParallel
屬性 (Attribute),設定為可以平行執行之 Parallel
命令的上限,以限制並行執行的 Process
命令數目。
例如,Parallel
屬性依序包含下列命令:
Create
Process
Alter
Process
Process
Process
Delete
Process
Process
此 maxParalle
屬性 (Property) 的 Parallel
l 屬性 (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
命令無法包括DataSourceView
、ErrorConfiguration
、Process
或Batch
屬性。 如果您必須為Process
命令指定這些屬性,請在包含Batch
命令的Process
命令的對應屬性中提供必要的資訊。
另請參閱
Batch 元素 (XMLA)
Process 元素 (XMLA)
多維度模型物件處理
在 Analysis Services 中使用 XMLA 進行開發