バッチ操作の実行 (XMLA)
XML for Analysis (XMLA) の Batch コマンドを使用すると、1 つの XMLA Execute メソッドを使用して複数の XMLA コマンドを 実行 できます。 Batch コマンドに含まれる複数のコマンドは、1 つのトランザクションとして、またはコマンドごとに個別のトランザクションで、シリアルまたは並列で実行できます。 複数の Microsoft SQL Server SQL Server Analysis Services オブジェクトを処理するために、Batch コマンドで行外バインディングやその他のプロパティを指定することもできます。
トランザクションおよび非トランザクション バッチ コマンドの実行
Batch コマンドは、次の 2 つの方法のいずれかでコマンドを実行します。
トランザクション
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 コマンドの Execute メソッドによって返される ExecuteResponse 要素の戻り値要素には 1 つの結果要素が含まれ、バッチ コマンドに含まれる正常に実行されたコマンドごとに 1 つのルート要素が含まれます。 Batch コマンド内のコマンドを開始できない場合、または完了に失敗した場合、Execute メソッドは、失敗したコマンドのエラーを含む Batch コマンドの SOAP エラーを返します。
非トランザクション バッチの結果から結果を返す処理
非トランザクション バッチ内で実行されるコマンドの結果は、コマンドが Batch コマンド内に含まれている順序で返され、各コマンドから返されます。 Batch コマンドに含まれるコマンドを正常に開始できない場合、Execute メソッドは Batch コマンドのエラーを含む SOAP エラーを返します。 少なくとも 1 つのコマンドが正常に開始された場合、Batch コマンドの Execute メソッドによって返される ExecuteResponse 要素の戻り値要素には 1 つの結果要素が含まれます。この要素には、Batch コマンドに含まれるコマンドごとに 1 つのルート要素が含まれます。 非トランザクション バッチ内の 1 つ以上のコマンドを開始できない場合、または完了に失敗した場合、失敗したコマンドの ルート 要素には 、エラー を説明するエラー要素が含まれます。
注意
非トランザクション バッチ内の少なくとも 1 つのコマンドを開始できる限り、非トランザクション バッチに含まれるすべてのコマンドが Batch コマンドの結果でエラーを返した場合でも、非トランザクション バッチは正常に実行されたと見なされます。
直列および並列実行の使用
Batch コマンドを使用して、付属のコマンドをシリアルまたは並列で実行できます。 コマンドをシリアルで実行すると、 Batch コマンドで現在実行中のコマンドが完了するまで、 Batch コマンドに含まれる次のコマンドを開始できません。 コマンドを並列で実行すると、 Batch コマンドで複数のコマンドを同時に実行できます。
コマンドを並列で実行するには、Batch コマンドの Parallel プロパティに並列で実行するコマンドを追加します。 現在、SQL Server Analysis Servicesは連続する順次プロセス コマンドのみを並列で実行できます。 Parallel プロパティに含まれる他の XMLA コマンド (Create や Alter など) は、順次実行されます。
SQL Server Analysis Servicesは、Parallel プロパティに含まれるすべての Process コマンドを並列で実行しようとしますが、含まれるすべての Process コマンドを並列で実行できることを保証することはできません。 インスタンスは各 Process コマンドを分析し、インスタンスがコマンドを並列で実行できないと判断した場合、 Process コマンドはシリアルで実行されます。
注意
コマンドを並列で実行するには、Batch コマンドの Transaction 属性を true に設定する必要があります。これは、SQL Server Analysis Servicesは接続ごとに 1 つのアクティブなトランザクションのみをサポートし、非トランザクション バッチは個別のトランザクションで各コマンドを実行するためです。 非トランザクション バッチに Parallel プロパティを含める場合は、エラーが発生します。
並列実行の制限
SQL Server Analysis Services インスタンスは、インスタンスが実行されているコンピューターの制限まで、可能な限り多くのプロセス コマンドを並列で実行しようとします。 Parallel プロパティの maxParallel 属性を、並列で実行できる Process コマンドの最大数を示す値に設定することで、同時に実行するプロセス コマンドの数を制限できます。
たとえば、 Parallel プロパティには、一覧表示されているシーケンスに次のコマンドが含まれています。
作成
Process
変更
Process
Process
Process
削除
Process
Process
この Parallel プロパティの maxParallel 属性は 2 に設定されます。 そのため、インスタンスは上のコマンドの一覧を以下の説明のとおりに実行します。
コマンド 1 は Create コマンドであり、 Process コマンドのみを並列で実行できるため、コマンド 1 は順次実行されます。
コマンド 2 は、コマンド 1 が完了した後、順次実行されます。
コマンド 3 は、コマンド 2 が完了した後に順次実行されます。
コマンド 4 と 5 は、コマンド 3 が完了した後に並列で実行されます。 コマンド 6 も Process コマンドですが、 maxParallel プロパティが 2 に設定されているため、コマンド 6 はコマンド 4 と 5 と並列で実行できません。
コマンド 6 は、コマンド 4 とコマンド 5 の両方が完了した後に直列に実行されます。
コマンド 7 はコマンド 6 の完了後に直列に実行されます。
コマンド 8 と 9 はコマンド 7 の完了後に並列で実行されます。
バッチ コマンドを使用したオブジェクトの処理
Batch コマンドには、複数のSQL Server Analysis Services プロジェクトの処理をサポートするために特別に含まれるいくつかの省略可能なプロパティと属性が含まれています。
Batch コマンドの ProcessAffectedObjects 属性は、指定されたオブジェクトを処理する Batch コマンドに含まれる Process コマンドの結果として、インスタンスが再処理を必要とするオブジェクトも処理する必要があるかどうかを示します。
Bindings プロパティには、Batch コマンドのすべての Process コマンドで使用される行外バインディングのコレクションが含まれています。
DataSource プロパティには、Batch コマンドのすべての Process コマンドで使用されるデータ ソースの行外バインディングが含まれています。
DataSourceView プロパティには、Batch コマンドのすべての Process コマンドで使用されるデータ ソース ビューの行外バインディングが含まれています。
ErrorConfiguration プロパティは、Batch コマンドに含まれるすべての Process コマンドで発生したエラーを Batch コマンドが処理する方法を指定します。
重要
Process コマンドが Batch コマンドに含まれている場合、Process コマンドに Bindings、DataSource、DataSourceView、または ErrorConfiguration プロパティを含めることはできません。 Process コマンドにこれらのプロパティを指定する必要がある場合は、 Process コマンドを含む Batch コマンドの対応するプロパティに必要な 情報を指定 します。
参照
Batch 要素 (XMLA)
Process 要素 (XMLA)
多次元モデルの処理 (Analysis Services)
Analysis Services での XMLA による開発