执行批处理操作 (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返回ExecuteExecuteResponse 元素的 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 命令可以同时执行多个命令。

若要并行运行命令,请将要并行运行的命令添加到命令的 BatchParallel 属性。 目前,Analysis Services 只能并行运行连续的 连续进程 命令。 属性中包含的Parallel任何其他 XMLA 命令(如 CreateAlter)都以串行方式运行。

Analysis Services 尝试并行运行 属性中包含的Parallel所有Process命令,但不能保证所有包含Process的命令都可以并行运行。 实例会分析每个 Process 命令,如果实例确定命令不能以并行方式执行,则 Process 命令将以串行方式执行。

注意

若要并行运行命令, Transaction 必须将 命令的 Batch 属性设置为 true,因为 Analysis Services 仅支持每个连接一个活动事务,并且非事务批处理在单独的事务中运行每个命令。 如果在非事务性批处理中包含 Parallel 属性,则将出现错误。

限制并行执行

Analysis Services 实例尝试并行运行尽可能多的 Process 命令,但要达到运行实例的计算机的限制。 将 Process 属性的 maxParallel 特性设为指示可并发执行的最大 Parallel 命令数,可限制同时执行的 Process 命令数。

例如,Parallel 属性按列出的顺序包含以下命令:

  1. Create

  2. Process

  3. Alter

  4. Process

  5. Process

  6. Process

  7. Delete

  8. Process

  9. Process

maxParalle 属性的 Parallell 特性设置为 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 命令不能包含 DataSourceViewErrorConfigurationProcessBatch 属性。 如果必须为 Process 命令指定这些属性,请在包含 Batch 命令的 Process 命令的相应属性中提供必要的信息。

另请参阅

Batch 元素 (XMLA)
Process 元素 (XMLA)
多维模型对象处理
在 Analysis Services 中使用 XMLA 开发