可以使用 XML for Analysis 中的 Batch 命令(XMLA)使用单个 XMLA Execute 方法运行多个 XMLA 命令。 可以将命令中包含的 Batch 多个命令作为单个事务运行,也可以在每个命令的单个事务中、串行或并行运行。 还可以在命令中 Batch 指定行外绑定和其他属性,以处理多个 SQL Server Analysis Services 对象Microsoft。
运行事务和非事务批处理命令
该 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返回的 ExecuteResponse 元素的返回Execute元素包含一个结果元素,后者又包含命令中包含的每个成功运行命令的Batch一个root元素。 如果命令中的任何 Batch 命令无法启动或无法完成,该方法 Execute 将返回包含失败命令错误的命令的 SOAP 错误 Batch 。
从非事务性批处理结果返回结果
命令在非事务批处理中运行的结果将按命令中包含的 Batch 顺序返回,并且每个命令返回它们时。 如果无法成功启动命令中包含的 Batch 命令,该方法 Execute 将返回包含命令错误的 Batch SOAP 错误。 如果已成功启动一个命令,return则命令方法Batch返回Execute的ExecuteResponse元素元素包含一个results元素,而该元素又包含命令中包含的每个命令的Batch一个root元素。 如果无法启动或无法完成非事务批处理中的一个或多个命令, root 该失败命令的元素将包含描述错误的 错误 元素。
注释
只要可以启动非事务批处理中的至少一个命令,则即使非事务批处理中包含的每个命令在命令结果 Batch 中返回错误,非事务批处理也会成功运行。
使用串行和并行执行
可以使用 Batch 该命令以串行或并行方式运行包含的命令。 当命令以串行方式运行时,命令中包含的 Batch 下一个命令在命令中完成当前正在运行的 Batch 命令之前无法启动。 当命令并行运行时,命令可以同时 Batch 执行多个命令。
若要并行运行命令,请将要并行运行的命令添加到命令的 BatchParallel 属性。 目前,Analysis Services 只能并行运行连续的有序 进程 命令。 属性中包含的Parallel任何其他 XMLA 命令(如 Create 或 Alter)都以串行方式运行。
Analysis Services 尝试并行运行属性中包含的Parallel所有Process命令,但不能保证可以并行运行所有包含Process的命令。 该实例将分析每个 Process 命令,如果实例确定该命令不能并行运行,则 Process 命令以串行方式运行。
注释
若要并行运行命令,必须将命令的属性Batch设置为 true,Transaction因为 Analysis Services 每个连接仅支持一个活动事务,并且非事务批处理在单独的事务中运行每个命令。 如果在 Parallel 非事务批处理中包含该属性,则会发生错误。
限制并行执行
Analysis Services 实例尝试并行运行任意数量的 Process 命令,最多取决于运行实例的计算机的限制。 可以通过将属性的属性设置为指示可并行运行的命令的最大数目的值来限制并发执行的Process命令数Process。maxParallelParallel
例如,属性 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 属性指定命令处理命令中包含的所有
Process命令Batch遇到的错误的方式Batch。重要
如果
Process命令包含在命令中Batch,则Process命令不能包含Bindings、DataSourceDataSourceView或ErrorConfiguration属性。 如果必须为命令指定这些属性Process,请在包含Process命令的Batch相应属性中提供必要的信息。
另请参阅
Batch 元素 (XMLA)
Process 元素 (XMLA)
多维模型对象处理
在 Analysis Services 中使用 XMLA 进行开发