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 コマンドに含まれるすべてのコマンドを 1 つのトランザクション a トランザクション バッチで実行します。
トランザクション バッチでいずれかのコマンドが失敗した場合、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 つの結果要素が含まれます。この要素には、Batch コマンドに含まれる正常に実行されたコマンドごとに 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 コマンドは順次実行されます。
注
コマンドを並列で実行するには、SQL Server Analysis Services では接続ごとに 1 つのアクティブなトランザクションのみがサポートされ、非トランザクション バッチでは各コマンドが個別のトランザクションで実行されるため、Batch コマンドの Transaction 属性を true に設定する必要があります。 Parallel プロパティを 非トランザクション バッチに含める場合は、エラーが発生します。
並列実行の制限
SQL Server Analysis Services インスタンスは、インスタンスが実行されているコンピューターの制限まで、できるだけ多くの プロセス コマンドを並列で実行しようとします。 並列で実行できるプロセス コマンドの最大数を示す値に Parallel プロパティの maxParallel 属性を設定することで、同時に実行するプロセス コマンドの数を制限できます。
たとえば、 Parallel プロパティには、一覧表示されているシーケンスに次のコマンドが含まれています。
創造する
処理
Alter
処理
処理
処理
削除
処理
処理
この Parallel プロパティの maxParallel 属性は 2 に設定されています。 そのため、インスタンスは、次の一覧で説明されているように、前のコマンドの一覧を実行します。
コマンド 1 は Create コマンドであり、 プロセス コマンドのみを並列で実行できるため、コマンド 1 は順次実行されます。
コマンド 2 は、コマンド 1 の完了後に順次実行されます。
コマンド 3 は、コマンド 2 の完了後に順次実行されます。
コマンド 4 とコマンド 5 は、コマンド 3 の完了後に並列で実行されます。 コマンド 6 も プロセス コマンドですが、 maxParallel プロパティが 2 に設定されているため、コマンド 6 はコマンド 4 と 5 と並列で実行できません。
コマンド 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 コマンドに含まれるすべての Process コマンドで発生したエラーを Batch コマンドが処理する方法を指定します。
Important
Process コマンドが Batch コマンドに含まれている場合、Process コマンドに Bindings、DataSource、DataSourceView、または ErrorConfiguration プロパティを含めることはできません。 Process コマンドにこれらのプロパティを指定する必要がある場合は、 Process コマンドを含む Batch コマンドの対応するプロパティに必要な 情報を指定 します。
こちらもご覧ください
Batch 要素 (XMLA)
Process 要素 (XMLA)
多次元モデルの処理 (Analysis Services)
Analysis Services での XMLA を使用した開発