次の方法で共有


バッチ操作の実行 (XMLA)

XML for Analysis (XMLA) の Batch コマンドを使用すると、1 つの XMLA Execute メソッドを使用して複数の XMLA コマンドを 実行 できます。 Batch コマンドに含まれる複数のコマンドは、1 つのトランザクションとして、またはコマンドごとに個別のトランザクションで、シリアルまたは並列で実行できます。 また、複数の Microsoft SQL Server Analysis Services オブジェクトを処理するために、 Batch コマンドで行外バインディングやその他のプロパティを指定することもできます。

トランザクション バッチ コマンドと非トランザクション バッチ コマンドの実行

Batch コマンドは、次の 2 つの方法のいずれかでコマンドを実行します。

トランザクション
Batch コマンドのTransaction属性が true に設定されている場合、Batch コマンドは、Batch コマンドに含まれるすべてのコマンドを単一のトランザクション a トランザクション バッチで実行します。

トランザクション バッチでいずれかのコマンドが失敗した場合、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 要素の戻り値要素には 1 つの結果要素が含まれ、Batch コマンドに含まれる正常に実行されたコマンドごとに 1 つのroot要素が含まれます。 Batch コマンド内のコマンドを開始できない場合、または完了できない場合、Execute メソッドは失敗したコマンドのエラーを含む Batch コマンドの SOAP エラーを返します。

非トランザクション バッチ結果から結果を返す

非トランザクション バッチ内で実行されるコマンドの結果は、コマンドが Batch コマンドに含まれている順序で、各コマンドによって返される順序で返されます。 Batch コマンドに含まれるコマンドを正常に開始できない場合、Execute メソッドは、Batch コマンドのエラーを含む SOAP エラーを返します。 少なくとも 1 つのコマンドが正常に開始された場合、Batch コマンドのExecute メソッドによって返されるExecuteResponse要素のreturn要素には 1 つのresults要素が含まれ、Batch コマンドに含まれるコマンドごとに 1 つのroot要素が含まれます。 非トランザクション バッチ内の 1 つ以上のコマンドを開始できない場合、または完了に失敗した場合、その失敗したコマンドの root 要素には 、エラー を説明するエラー要素が含まれます。

非トランザクション バッチ内の少なくとも 1 つのコマンドを開始できる限り、非トランザクション バッチに含まれるすべてのコマンドが、 Batch コマンドの結果でエラーを返した場合でも、非トランザクション バッチは正常に実行されたと見なされます。

シリアル実行と並列実行の使用

Batch コマンドを使用して、付属のコマンドをシリアルまたは並列で実行できます。 コマンドをシリアルで実行すると、Batch コマンドで現在実行中のコマンドが完了するまで、Batch コマンドに含まれる次のコマンドを開始できません。 コマンドを並列で実行すると、 Batch コマンドで複数のコマンドを同時に実行できます。

コマンドを並列で実行するには、並列実行するコマンドを Batch コマンドの Parallel プロパティに追加します。 現在、Analysis Services は連続した連続した プロセス コマンドのみを並列で実行できます。 Parallel プロパティに含まれる他の XMLA コマンド (CreateAlter など) は、順次実行されます。

Analysis Services は、Parallel プロパティに含まれるすべてのProcess コマンドを並列で実行しようとしますが、含まれるすべてのProcess コマンドを並列で実行できることを保証することはできません。 インスタンスは各 Process コマンドを分析し、インスタンスがコマンドを並列で実行できないと判断した場合、 Process コマンドはシリアルで実行されます。

コマンドを並列で実行するには、Analysis Services が接続ごとに 1 つのアクティブなトランザクションのみをサポートし、非トランザクション バッチで各コマンドを個別のトランザクションで実行するため、Batch コマンドのTransaction属性を true に設定する必要があります。 Parallel プロパティを非トランザクション バッチに含める場合は、エラーが発生します。

並列実行の制限

Analysis Services インスタンスは、インスタンスが実行されるコンピューターの制限に達するまで、できるだけ多くの Process コマンドを並列で実行しようとします。 Parallel プロパティのmaxParallel属性を、並列で実行できるProcessコマンドの最大数を示す値に設定することで、同時に実行するProcess コマンドの数を制限できます。

たとえば、 Parallel プロパティには、一覧表示されているシーケンスに次のコマンドが含まれています。

  1. Create

  2. Process

  3. Alter

  4. Process

  5. Process

  6. Process

  7. Delete

  8. Process

  9. Process

このParallel プロパティの maxParallel 属性は 2 に設定されています。 そのため、インスタンスは、次の一覧で説明されているように、前のコマンドの一覧を実行します。

  • コマンド 1 は Create コマンドであり、 Process コマンドのみを並列で実行できるため、コマンド 1 は順次実行されます。

  • コマンド 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 プロジェクトの処理をサポートするために特別に含まれるいくつかの省略可能なプロパティと属性が含まれています。

  • Batch コマンドのProcessAffectedObjects属性は、指定されたオブジェクトを処理するBatch コマンドに含まれるProcessコマンドの結果として、再処理が必要なオブジェクトもインスタンスで処理する必要があるかどうかを示します。

  • Bindings プロパティには、Batch コマンドのすべてのProcess コマンドで使用される、行外バインディングのコレクションが含まれています。

  • DataSource プロパティには、Batch コマンドのすべてのProcess コマンドで使用されるデータ ソースのアウトオブライン バインディングが含まれています。

  • DataSourceView プロパティには、Batch コマンドのすべてのProcess コマンドで使用されるデータ ソース ビューの行外バインディングが含まれています。

  • ErrorConfiguration プロパティは、Batch コマンドに含まれるすべてのProcess コマンドで発生したエラーを、Batch コマンドが処理する方法を指定します。

    重要

    Process コマンドが Batch コマンドに含まれている場合、Process コマンドには、BindingsDataSourceDataSourceView、またはErrorConfigurationプロパティを含めることはできません。 Process コマンドにこれらのプロパティを指定する必要がある場合は、Process コマンドを含む Batch コマンドの対応するプロパティに必要な情報を指定します。

こちらもご覧ください

Batch 要素 (XMLA)
Process 要素 (XMLA)
多次元モデル オブジェクト処理
Analysis Services での XMLA を使用した開発