次の方法で共有


バッチ操作の実行 (XMLA)

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

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

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

トランザクション
コマンドの属性が TransactionBatch 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コマンドは results 要素内の空のルート要素を返します。 空の root 要素があることにより、Batch コマンドに含まれるそれぞれのコマンドが、そのコマンドの結果の適切な root 要素と確実に対応します。

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

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

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

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

注意

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

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

Batch コマンドでは、含まれるコマンドを直列または並列で実行することができます。 コマンドが直列に実行される場合、Batch コマンド内に含まれる次のコマンドは、Batch コマンド内で現在実行中のコマンドが完了するまで起動できません。 コマンドが並列で実行される場合、Batch によって複数のコマンドを同時に実行することができます。

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

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

注意

コマンドを並列で実行するには、Analysis Services が接続ごとに 1 つのアクティブなトランザクションのみをサポートし、 Transaction 非トランザクション バッチで各コマンドを個別のトランザクションで実行するため、コマンドの属性 Batch を true に設定する必要があります。 非トランザクション バッチに 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 プロパティの Parallel 属性は 2 に設定されています。 そのため、インスタンスは上のコマンドの一覧を以下の説明のとおりに実行します。

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

  • コマンド 2 は、コマンド 1 の完了後に順次実行されます。

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

  • コマンド 4 と 5 は、コマンド 3 が完了した後に並列で実行されます。 コマンド 6 も Process コマンドですが、maxParallel プロパティが 2 に設定されているため、コマンド 6 がコマンド 4 と 5 と共に並行で実行されることはありません。

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

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

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

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

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

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

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

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

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

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

    重要

    Process コマンドが Bindings コマンドに含まれている場合、その DataSource コマンドには DataSourceViewErrorConfigurationProcess、および Batch プロパティを含めることができません。 Process コマンドにこれらのプロパティを含める必要がある場合、その Batch コマンドを含む Process の対応するプロパティに、必要な情報を指定してください。

参照

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