バッチ操作の実行 (XMLA)

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

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

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

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

トランザクションバッチ内のいずれかのコマンドが失敗した場合、Analysis Services は、失敗したコマンドの前に実行された バッチ コマンド内のすべてのコマンドをロールバックし、 バッチ コマンドを直ちに終了します。 バッチコマンドでまだ実行されていないコマンドは実行されません。 バッチコマンドが終了すると、 batchコマンドは失敗したコマンドで発生したすべてのエラーを報告します。

非トランザクション
Transaction属性が false に設定されている場合、 batchコマンドは、 batchコマンドに含まれる各コマンドを別のトランザクション (非トランザクションバッチ) で実行します。 非トランザクションバッチ内のいずれかのコマンドが失敗した場合、 batch コマンドは、失敗したコマンドの後にコマンドを実行し続けます。 Batch コマンドでは、 batch コマンドに含まれているすべてのコマンドを実行しようとすると、発生したすべてのエラーが報告されます

バッチコマンドに含まれるコマンドによって返されるすべての結果は、コマンドがバッチコマンドに含まれている順序で返されます。 バッチコマンドによって返される結果は、バッチコマンドがトランザクションか非トランザクションかによって異なります。

注意

Output を返さないコマンド ( Lockコマンドなど) がバッチコマンドに含まれていて、そのコマンドが正常に実行された場合、 batchコマンドは結果要素内の空のルート要素を返します。 空の ルート 要素を使用すると、 バッチ コマンドに含まれる各コマンドが、そのコマンドの結果の適切な ルート 要素と一致することが保証されます。

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

トランザクションバッチ内で実行されたコマンドの結果は、 バッチ コマンド全体が完了するまで返されません。 各コマンドが実行された後に結果が返されることはありません。トランザクションバッチ内で失敗したコマンドによって バッチ コマンド全体が生成され、それを含むすべてのコマンドがロールバックされるためです。 すべてのコマンドが開始され、正常に実行された場合、 batchコマンドのExecuteメソッドによって返されるExecuteResponse要素のreturn要素には1つの結果要素が含まれます。この要素には、 batchコマンドに含まれる正常に実行されたコマンドごとに1つのルート要素が含まれます。 バッチコマンド内のいずれかのコマンドが開始できない場合、または完了に失敗した場合、 Executeメソッドは、失敗したコマンドのエラーを含むbatchコマンドの SOAP エラーを返します。

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

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

注意

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

直列および並列実行の使用

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

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

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

注意

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

並列実行の制限

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

たとえば、 Parallel プロパティには、次のコマンドが一覧表示されます。

  1. 作成

  2. Process

  3. Alter

  4. Process

  5. Process

  6. Process

  7. 削除

  8. Process

  9. Process

このParallelプロパティのmaxParallel 属性は2に設定されています。 そのため、インスタンスは上のコマンドの一覧を以下の説明のとおりに実行します。

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

  • コマンド1が完了すると、コマンド2は順次実行されます。

  • コマンド3は、コマンド2が完了した後に順次実行されます。

  • コマンド3が完了した後、コマンド4および5が並列で実行されます。 コマンド6も プロセス コマンドですが、 maxparallel プロパティが2に設定されているため、コマンド6をコマンド4および5と並行して実行することはできません。

  • コマンド 6 は、コマンド 4 とコマンド 5 の両方が完了した後に直列に実行されます。

  • コマンド 7 はコマンド 6 の完了後に直列に実行されます。

  • コマンド 8 と 9 はコマンド 7 の完了後に並列で実行されます。

バッチ コマンドを使用したオブジェクトの処理

Batchコマンドには、複数の Analysis Services プロジェクトの処理をサポートするために特に含まれるオプションのプロパティと属性がいくつか含まれています。

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

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

  • DataSourceプロパティには、 BatchコマンドのすべてのProcessコマンドで使用されるデータソースの不一致バインドが含まれています。

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

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

    重要

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

参照

Batch 要素 (XMLA)
Process 要素 (XMLA)
多次元モデルの処理 (Analysis Services)
Analysis Services での XMLA による開発