您可以使用 XML for Analysis (XMLA) 中的 Batch 命令,使用單一 XMLA Execute 方法來執行多個 XMLA 命令。 您可以針對每個命令,以序列或平行方式,以單一交易或個別交易的形式執行命令中包含的 Batch 多個命令。 您也可以在 命令中 Batch 指定行外系結和其他屬性,以處理多個 SQL Server Analysis Services 物件Microsoft。
執行交易式和非交易式 Batch 命令
命令 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 會傳回包含命令錯誤的 Batch SOAP錯誤。 如果至少一個命令成功啟動,return則 命令之 方法Batch傳Execute回之元素的 ExecuteResponse 元素會包含一個元素,而該元素接著會針對命令中包含的Batch每個命令包含一results個root元素。 如果無法啟動或無法完成非交易批次中的一或多個命令, root 該失敗命令的 元素會包含描述 錯誤的錯誤 元素。
備註
只要可以啟動非交易批次中的至少一個命令,即使非交易批次中包含的每個命令在命令結果 Batch 中傳回錯誤,非交易批次仍會被視為已成功執行。
使用序列和平行執行
您可以使用 Batch 命令,以序列或平行方式執行包含的命令。 當命令以序列執行時,命令中包含的 Batch 下一個命令必須等到命令中 Batch 目前執行的命令完成之後,才能啟動。 當命令平行執行時,命令可以同時 Batch 執行多個命令。
若要平行執行命令,請將要平行執行的命令新增至命令的 BatchParallel 屬性。 目前,Analysis Services 只能平行執行連續、循序 的 Process 命令。 屬性中包含的Parallel任何其他 XMLA 命令,例如 Create 或 Alter,都是以序列方式執行。
Analysis Services 會嘗試平行執行 屬性中包含的Parallel所有Process命令,但無法保證所有包含Process的命令都可以平行執行。 實例會分析每個 Process 命令,如果實例判斷無法平行執行命令,則會 Process 以序列方式執行命令。
備註
若要平行執行命令,命令的 Batch 屬性必須設定為 true,Transaction因為 Analysis Services 在個別交易中只支援一個作用中交易,而且非交易批次會在個別的交易中執行每個命令。 如果您在 Parallel 非交易批次中包含 屬性,就會發生錯誤。
限制平行執行
Analysis Services 實例會嘗試盡可能平行執行多個 Process 命令,最多執行實例執行所在的計算機限制。 您可以將 屬性的 屬性設定maxParallel為值,指出可以平行執行的命令數目上限,以限制同時執行的Process命令數目Process。Parallel
例如, Parallel 屬性包含所列序列中的下列命令:
CreateProcessAlterProcessProcessProcessDeleteProcessProcess
maxParalle此屬性Parallel的 l 屬性設定為 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如果Process命令包含在命令中Batch,則命令不能包含Bindings、DataSourceDataSourceView或ErrorConfiguration屬性。 如果您必須為命令指定這些屬性Process,請在包含Process命令的Batch對應屬性中提供必要資訊。
另請參閱
Batch 元素 (XMLA)
Process 元素 (XMLA)
多維度模型對象處理
在 Analysis Services 中使用 XMLA 進行開發