执行批处理操作 (XMLA)

可以使用 XML for Analysis 中的 Batch 命令 (XMLA) 使用单个 XMLA Execute 方法运行多个 XMLA 命令。 可以将 Batch 命令中包含的多个命令作为单个事务运行,也可以在每个命令的单个事务中、串行或并行运行。 还可以在 Batch 命令中指定行外绑定和其他属性,以处理多个 Microsoft SQL Server SQL Server Analysis Services 对象。

运行事务性和非事务性 Batch 命令

Batch 命令以以下两种方式之一执行命令:

事务性
如果 Batch 命令的 Transaction 属性设置为 true,Batch 命令将运行由 Batch 命令包含在单个事务事务批处理中的所有命令。

如果事务批处理中的任何命令失败,SQL Server Analysis Services回滚在命令失败且 Batch 命令立即结束之前运行的 Batch 命令中的任何命令。 尚未运行 Batch 命令中的任何命令都不会执行。 Batch 命令结束后,Batch 命令报告失败命令发生的任何错误。

非事务性
如果 Transaction 属性设置为 false,Batch 命令将在单独的事务和非事务批处理中运行 Batch 命令包含的每个命令。 如果任何命令在非事务批处理中失败, Batch 命令将继续在命令失败后运行命令。 Batch 命令尝试运行 Batch 命令包含的所有命令后,Batch 命令将报告发生的任何错误。

Batch 命令中包含的命令返回的所有结果都以 Batch 命令中包含的命令的顺序返回。 Batch 命令返回的结果因 Batch 命令是事务性的还是非事务性的而有所不同。

注意

如果 Batch 命令包含不返回输出的命令(如 Lock 命令),并且该命令成功运行, Batch 命令将返回结果元素中的空 元素。 空 元素可确保 Batch 命令中包含的每个命令都可以与该命令结果的相应 元素匹配。

从事务性批处理结果返回结果

在完成整个 Batch 命令之前,不会返回事务批处理中运行的命令的结果。 每个命令运行后不会返回结果,因为事务批处理中失败的任何命令都会导致整个 Batch 命令和所有包含的命令回滚。 如果所有命令都成功启动并运行,Batch 命令ExecuteResponse 元素返回的 return 元素包含一个结果元素,后者又包含 Batch 命令中包含的每个成功运行命令的一个元素。 如果 Batch 命令中的任何命令无法启动或无法完成, Execute 方法将返回包含失败命令错误的 Batch 命令的 SOAP 错误。

从非事务性批处理结果返回结果

命令在非事务批处理中运行的结果按照 命令包含在 Batch 命令中的顺序返回,以及每个命令返回的顺序。 如果无法成功启动 Batch 命令中包含的命令, Execute 方法将返回包含 Batch 命令错误的 SOAP 错误。 如果成功启动了至少一个命令,则由 Batch 命令的 Execute 方法返回的 ExecuteResponse 元素的返回元素包含一个结果元素,后者又包含 Batch 命令中包含的每个命令的一个元素。 如果无法启动或未能完成非事务批处理中的一个或多个命令,则失败命令的 元素包含描述错误的 错误 元素。

注意

只要可以启动非事务批处理中的至少一个命令,就认为非事务批处理已成功运行,即使非事务批处理中包含的每个命令都会在 Batch 命令的结果中返回错误。

使用串行和并行执行

可以使用 Batch 命令以串行或并行方式运行包含的命令。 当命令以串行方式运行时, Batch 命令中包含的下一个命令在 Batch 命令中当前运行的命令完成之前无法启动。 当命令并行运行时, Batch 命令可以 同时执行多个命令。

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

SQL Server Analysis Services尝试并行运行并行属性中包含的所有 Process 命令,但不能保证可以并行运行所有包含的进程命令。 该实例将分析每个 Process 命令,如果实例确定无法并行运行该命令, 则进程 命令以串行方式运行。

注意

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

限制并行执行

SQL Server Analysis Services实例尝试并行运行任意数量的 Process 命令,具体取决于实例运行的计算机的限制。 通过将 Parallel 属性的 maxParallel 属性设置为一个值,指示可以并行运行的 Process 命令的最大数目,可以限制并发执行 Process 命令的数量。

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

  1. 创建

  2. 处理

  3. 更改

  4. 处理

  5. 处理

  6. 处理

  7. 删除

  8. 处理

  9. 处理

Parallel 属性的 maxParallel 属性设置为 2。 因此,实例按照以下列表中所述,运行前面列表中的命令:

  • 命令 1 串行运行,因为命令 1 是 Create 命令,只能并行运行 Process 命令。

  • 命令 2 在命令 1 完成后串行运行。

  • 命令 3 在命令 2 完成后串行运行。

  • 命令 4 和 5 在命令 3 完成后并行运行。 尽管命令 6 也是 进程 命令,但命令 6 不能与命令 4 和 5 并行运行,因为 maxParallel 属性设置为 2。

  • 命令 6 以串行方式在命令 4 和 5 都完成后运行。

  • 命令 7 以串行方式在命令 6 完成后运行。

  • 命令 8 和 9 以并行方式在命令 7 完成后运行。

使用 Batch 命令处理对象

Batch 命令包含多个可选属性和属性,这些属性专门用于支持处理多个SQL Server Analysis Services项目:

  • Batch 命令的 ProcessAffectedObjects 属性指示实例是否还应处理任何需要重新处理的对象,因为 Batch 命令中包含的 Process 命令处理指定对象。

  • Bindings 属性包含 Batch 命令中所有 Process 命令使用的行外绑定的集合。

  • DataSource 属性包含 Batch 命令中所有 Process 命令使用的数据源的行外绑定。

  • DataSourceView 属性包含 Batch 命令中所有 Process 命令使用的数据源视图的行外绑定。

  • ErrorConfiguration 属性指定 Batch 命令处理 Batch 命令中包含的所有进程命令遇到的错误的方式。

    重要

    如果 Process 命令包含在 Batch 命令中,则 Process 命令不能包含 BindingsDataSourceViewErrorConfiguration 属性。 如果必须为 Process 命令指定这些属性,请在包含 Process 命令的 Batch 命令的相应属性中提供必要信息。

另请参阅

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