执行批处理操作 (XMLA)
可以使用 XML for Analysis (XMLA) 中的 Batch 命令,使用单个 XMLA Execute 方法运行多个 XMLA 命令。 可以作为单个事务或者每个命令为一个事务,以串行或并行方式运行 Batch
命令中包含的多个命令。 还可以在 命令中Batch
指定用于处理多个 Microsoft SQL Server Analysis Services 对象的非内联绑定和其他属性。
运行事务性和非事务性 Batch 命令
Batch
以下列两种方式之一执行命令:
事务性
Transaction
如果命令的 Batch
属性设置为 true,则Batch
命令将运行命令包含在单个事务中的所有命令Batch
-事务批处理。
如果任何命令在事务批处理中失败,Analysis Services 将回滚命令中 Batch
运行的任何命令,该命令在失败之前运行,命令 Batch
立即结束。 Batch
命令中尚未运行的任何命令都不再执行。 Batch
命令结束后,Batch
命令将报告失败命令发生的所有错误。
Nontransactional
如果 属性Transaction
设置为 false,则命令在Batch
单独的事务(非事务批处理)中运行命令包含Batch
的每个命令。 如果非事务性批处理中的任一命令失败,Batch
命令会继续执行失败命令后的命令。 Batch
命令尝试运行 Batch
命令包含的所有命令后,Batch
命令将报告发生的所有错误。
Batch
命令中包含的各命令返回的所有结果以这些命令包含在 Batch
命令中的顺序返回。 Batch
命令返回的结果根据 Batch
命令是事务性的还是非事务性的而不同。
注意
Batch
如果命令包含不返回输出的命令(如 Lock 命令),并且该命令成功运行,则Batch
命令将在 results 元素中返回空根元素。 空的 root
元素可确保 Batch
命令中包含的每个命令都与该命令的结果的相应 root
元素匹配。
从事务性批处理结果返回结果
只有在整个 Batch
命令全部完成之后,才会从事务性批处理中运行的命令返回结果。 由于事务性批处理中任一命令失败将导致整个 Batch
命令及其包含的所有命令都回滚,因此不在每个命令运行后返回结果。 如果所有命令都成功启动并运行,则命令的 方法Batch
返回Execute
的 ExecuteResponse 元素的 return 元素将包含一个 results 元素,而结果元素又包含一个root
元素,用于命令中包含的Batch
每个成功运行命令。 如果 Batch
命令中的任一命令无法启动或完成,Execute
方法将为 Batch
命令返回一个 SOAP 错误,其中包含失败命令的错误。
从非事务性批处理结果返回结果
从非事务性批处理中运行的命令返回的结果以这些命令在 Batch
命令中的顺序返回,并且在每个命令返回结果时即将该结果返回。 如果 Batch
命令中包含的命令都无法成功启动,Execute
方法将返回包含 Batch
命令的错误的 SOAP 错误。 如果至少一个命令成功启动,则由 return
命令的 ExecuteResponse
方法返回的 Execute
元素的 Batch
元素将包含一个 results
元素,该元素为 root
命令中包含的每个命令包含一个 Batch
元素。 如果无法启动或无法完成非事务批处理中的一个或多个命令,则失败命令的 root
元素包含描述错误的 错误 元素。
注意
只要非事务性批处理中至少有一个命令能够启动,就认为该非事务性批处理成功运行,即使该非事务性批处理中包含的每个命令都在 Batch
命令的结果中返回错误。
使用串行和并行执行
可以使用 Batch
命令以串行或并行方式运行所包含的命令。 以串行方式运行命令时,Batch
命令中包含的下一个命令必须等 Batch
命令中当前运行的命令完成后才能启动。 以并行方式运行命令时,Batch
命令可以同时执行多个命令。
若要并行运行命令,请将要并行运行的命令添加到命令的 Batch
Parallel 属性。 目前,Analysis Services 只能并行运行连续的 连续进程 命令。 属性中包含的Parallel
任何其他 XMLA 命令(如 Create 或 Alter)都以串行方式运行。
Analysis Services 尝试并行运行 属性中包含的Parallel
所有Process
命令,但不能保证所有包含Process
的命令都可以并行运行。 实例会分析每个 Process
命令,如果实例确定命令不能以并行方式执行,则 Process
命令将以串行方式执行。
注意
若要并行运行命令, Transaction
必须将 命令的 Batch
属性设置为 true,因为 Analysis Services 仅支持每个连接一个活动事务,并且非事务批处理在单独的事务中运行每个命令。 如果在非事务性批处理中包含 Parallel
属性,则将出现错误。
限制并行执行
Analysis Services 实例尝试并行运行尽可能多的 Process
命令,但要达到运行实例的计算机的限制。 将 Process
属性的 maxParallel
特性设为指示可并发执行的最大 Parallel
命令数,可限制同时执行的 Process
命令数。
例如,Parallel
属性按列出的顺序包含以下命令:
Create
Process
Alter
Process
Process
Process
Delete
Process
Process
此 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
命令包含在Bindings
命令中,则DataSource
命令不能包含DataSourceView
、ErrorConfiguration
、Process
或Batch
属性。 如果必须为Process
命令指定这些属性,请在包含Batch
命令的Process
命令的相应属性中提供必要的信息。
另请参阅
Batch 元素 (XMLA)
Process 元素 (XMLA)
多维模型对象处理
在 Analysis Services 中使用 XMLA 开发