Freigeben über


Ausführen von Batchvorgängen (XMLA)

Sie können den Batchbefehl in XML for Analysis (XMLA) verwenden, um mehrere XMLA-Befehle mit einer einzigen XMLA Execute-Methode auszuführen. Sie können mehrere Befehle ausführen, die Batch im Befehl enthalten sind, entweder als einzelne Transaktion oder in einzelnen Transaktionen für jeden Befehl, in seriell oder parallel. Sie können auch out-of-line-Bindungen und andere Eigenschaften im Batch Befehl angeben, um mehrere Microsoft SQL Server Analysis Services-Objekte zu verarbeiten.

Ausführen von Transaktions- und nichttransactionalen Batchbefehlen

Der Batch Befehl führt Befehle auf eine von zwei Arten aus:

Transaktion
Wenn das Transaction Attribut des Batch Befehls auf "true" festgelegt ist, führt der Batch Befehl alle Befehle aus, die vom Batch Befehl in einem einzelnen Transaktionsbatch enthalten sind.

Wenn ein Befehl in einem Transaktionsbatch fehlschlägt, setzt Analysis Services alle Befehle im Befehl zurück, der Batch vor dem fehlgeschlagenen Befehl ausgeführt wurde und der Batch Befehl sofort beendet wird. Alle Befehle im Befehl, die Batch noch nicht ausgeführt werden, werden nicht ausgeführt. Nachdem der Batch Befehl beendet wurde, meldet der Batch Befehl alle Fehler, die für den fehlgeschlagenen Befehl aufgetreten sind.

Nichttransaktional
Wenn das Attribut auf "false" festgelegt ist, führt der TransactionBatch Befehl jeden Befehl aus, der Batch im Befehl in einem separaten Transaktionsbatch enthalten ist. Wenn ein Befehl in einem nichttransactionalen Batch fehlschlägt, führt der Batch Befehl weiterhin Befehle aus, nachdem der Befehl fehlgeschlagen ist. Nachdem der Batch Befehl versucht, alle befehle auszuführen, die der Batch Befehl enthält, meldet der Batch Befehl alle aufgetretenen Fehler.

Alle ergebnisse, die von Befehlen zurückgegeben werden, die in einem Batch Befehl enthalten sind, werden in derselben Reihenfolge zurückgegeben, in der die Befehle im Batch Befehl enthalten sind. Die von einem Batch Befehl zurückgegebenen Ergebnisse variieren je nachdem, ob der Batch Befehl transaktional oder nichttransaktional ist.

Hinweis

Wenn ein Batch Befehl einen Befehl enthält, der keine Ausgabe zurückgibt, z. B. den Befehl "Sperren ", und dieser Befehl erfolgreich ausgeführt wird, gibt der Batch Befehl ein leeres Stammelement innerhalb des Ergebniselements zurück. Das leere root Element stellt sicher, dass jeder befehl, der in einem Batch Befehl enthalten ist, mit dem entsprechenden root Element für die Ergebnisse dieses Befehls abgeglichen werden kann.

Zurückgeben von Ergebnissen aus Transaktionsbatchergebnissen

Ergebnisse von Befehlen, die in einem Transaktionsbatch ausgeführt werden, werden erst zurückgegeben, wenn der gesamte Batch Befehl abgeschlossen ist. Die Ergebnisse werden nicht zurückgegeben, nachdem jeder Befehl ausgeführt wird, da alle Befehle, die innerhalb eines Transaktionsbatches fehlschlagen, den gesamten Batch Befehl und alle enthaltenden Befehle zurückgesetzt werden. Wenn alle Befehle erfolgreich gestartet und ausgeführt werden, enthält das Rückgabeelement des ExecuteResponse-Elements , das von der Execute Methode für den Batch Befehl zurückgegeben wird, ein Ergebniselement , das wiederum ein root Element für jeden erfolgreich ausgeführten Befehl enthält, der Batch im Befehl enthalten ist. Wenn ein Befehl im Batch Befehl nicht gestartet werden kann oder nicht abgeschlossen werden kann, gibt die Execute Methode einen SOAP-Fehler für den Batch Befehl zurück, der den Fehler des fehlgeschlagenen Befehls enthält.

Zurückgeben von Ergebnissen aus nichttransactionalen Batchergebnissen

Ergebnisse von Befehlen, die in einem nichttransactionalen Batch ausgeführt werden, werden in der Reihenfolge zurückgegeben, in der die Befehle im Batch Befehl enthalten sind und wie sie von jedem Befehl zurückgegeben werden. Wenn kein Befehl im Batch Befehl erfolgreich gestartet werden kann, gibt die Execute Methode einen SOAP-Fehler zurück, der einen Fehler für den Batch Befehl enthält. Wenn mindestens ein Befehl erfolgreich gestartet wird, enthält das return Element des ExecuteResponse Elements, das von der Execute Methode für den Batch Befehl zurückgegeben wird, ein results Element, das wiederum ein root Element für jeden Befehl enthält, der Batch im Befehl enthalten ist. Wenn mindestens ein Befehl in einem nichttransaktionellen Batch nicht gestartet oder nicht abgeschlossen werden kann, enthält das Element für diesen fehlgeschlagenen Befehl ein Fehlerelement, das root den Fehler beschreibt.

Hinweis

Solange mindestens ein Befehl in einem nichttransactionalen Batch gestartet werden kann, wird der nichttransaktionale Batch als erfolgreich ausgeführt betrachtet, auch wenn jeder befehl, der im nichttransactionalen Batch enthalten ist, einen Fehler in den Ergebnissen des Batch Befehls zurückgibt.

Verwenden der seriellen und parallelen Ausführung

Sie können den Batch Befehl verwenden, um eingeschlossene Befehle in serieller oder paralleler Ausführung auszuführen. Wenn die Befehle serial ausgeführt werden, kann der nächste befehl, der Batch im Befehl enthalten ist, erst gestartet werden, wenn der aktuell ausgeführte Befehl im Batch Befehl abgeschlossen ist. Wenn die Befehle parallel ausgeführt werden, können mehrere Befehle gleichzeitig vom Batch Befehl ausgeführt werden.

Um Befehle parallel auszuführen, fügen Sie die Befehle hinzu, die parallel zur Paralleleigenschaft des Batch Befehls ausgeführt werden sollen. Derzeit kann Analysis Services nur zusammenhängende, sequenzielle Prozessbefehle parallel ausführen. Alle anderen XMLA-Befehle, z. B. Erstellen oder Ändern, werden in der Parallel Eigenschaft serial ausgeführt.

Analysis Services versucht, alle Process Befehle, die in der Parallel Eigenschaft enthalten sind, parallel auszuführen, kann jedoch nicht garantieren, dass alle enthaltenen Process Befehle parallel ausgeführt werden können. Die Instanz analysiert jeden Process Befehl, und wenn die Instanz feststellt, dass der Befehl nicht parallel ausgeführt werden kann, wird der Process Befehl serial ausgeführt.

Hinweis

Um Befehle parallel auszuführen, muss das Transaction Attribut des Batch Befehls auf "true" festgelegt werden, da Analysis Services nur eine aktive Transaktion pro Verbindung unterstützt und nichttransactionale Batches jeden Befehl in einer separaten Transaktion ausführen. Wenn Sie die Parallel Eigenschaft in einen nichttransactionalen Batch einschließen, tritt ein Fehler auf.

Einschränken der parallelen Ausführung

Eine Analysis Services-Instanz versucht, so viele Process Befehle parallel wie möglich auszuführen, bis zu den Grenzwerten des Computers, auf dem die Instanz ausgeführt wird. Sie können die Anzahl der gleichzeitig ausgeführten Process Befehle einschränken, indem Sie das maxParallel Attribut der Parallel Eigenschaft auf einen Wert festlegen, der die maximale Anzahl von Process Befehlen angibt, die parallel ausgeführt werden können.

Beispielsweise enthält eine Parallel Eigenschaft die folgenden Befehle in der aufgeführten Sequenz:

  1. Create

  2. Process

  3. Alter

  4. Process

  5. Process

  6. Process

  7. Delete

  8. Process

  9. Process

Das maxParallel-Attribut dieser Parallel Eigenschaft ist auf 2 festgelegt. Daher führt die Instanz die vorherigen Befehlslisten aus, wie in der folgenden Liste beschrieben:

  • Befehl 1 wird serial ausgeführt, da Befehl 1 ein Create Befehl ist und nur Process Befehle parallel ausgeführt werden können.

  • Befehl 2 wird nach Abschluss von Befehl 1 fortlaufend ausgeführt.

  • Befehl 3 wird nach Abschluss von Befehl 2 fortlaufend ausgeführt.

  • Befehle 4 und 5 werden parallel ausgeführt, nachdem Befehl 3 abgeschlossen wurde. Obwohl Befehl 6 auch ein Process Befehl ist, kann Befehl 6 nicht parallel mit Befehlen 4 und 5 ausgeführt werden, da die maxParallel Eigenschaft auf 2 festgelegt ist.

  • Befehl 6 wird serial ausgeführt, nachdem beide Befehle 4 und 5 abgeschlossen wurden.

  • Befehl 7 wird nach Abschluss von Befehl 6 fortlaufend ausgeführt.

  • Befehle 8 und 9 werden parallel ausgeführt, nachdem Befehl 7 abgeschlossen wurde.

Verwenden des Batchbefehls zum Verarbeiten von Objekten

Der Batch Befehl enthält mehrere optionale Eigenschaften und Attribute, die speziell zur Unterstützung der Verarbeitung mehrerer Analysis Services-Projekte gehören:

  • Das ProcessAffectedObjects Attribut des Batch Befehls gibt an, ob die Instanz auch ein Objekt verarbeiten soll, das eine erneute Verarbeitung durch einen Process Befehl erfordert, der in der Batch Befehlsverarbeitung eines angegebenen Objekts enthalten ist.

  • Die Bindings-Eigenschaft enthält eine Auflistung von out-of-line-Bindungen, die Process von allen Befehlen im Batch Befehl verwendet werden.

  • Die DataSource-Eigenschaft enthält eine out-of-line-Bindung für eine Datenquelle, die Process von allen Befehlen im Batch Befehl verwendet wird.

  • Die DataSourceView-Eigenschaft enthält eine out-of-line-Bindung für eine Datenquellenansicht, die Process von allen Befehlen im Batch Befehl verwendet wird.

  • Die ErrorConfiguration -Eigenschaft gibt die Art und Weise an, in der der Batch Befehl Fehler behandelt, die von allen Process Befehlen im Batch Befehl gefunden werden.

    Von Bedeutung

    Wenn Process der Process Befehl in einem Batch Befehl enthalten ist, kann ein Befehl die BindingsEigenschaften , DataSource, oder DataSourceViewErrorConfiguration Eigenschaften nicht enthalten sein. Wenn Sie diese Eigenschaften für einen Process Befehl angeben müssen, geben Sie die erforderlichen Informationen in den entsprechenden Eigenschaften des Batch Befehls an, der den Process Befehl enthält.

Siehe auch

Batch-Element (XMLA)
Process-Element (XMLA)
Verarbeitung von Objekten im multidimensionalen Modell
Entwickeln mit XMLA in Analysis Services