Freigeben über


Ausführen von Batchvorgängen (XMLA)

Sie können den Batchbefehl in XML for Analysis (XMLA) verwenden, um mehrere XMLA-Befehle mithilfe einer einzelnen XMLA Execute-Methode auszuführen. Sie können mehrere Befehle ausführen, die im Batchbefehl entweder als einzelne Transaktion oder in einzelnen Transaktionen für jeden Befehl, in serieller oder paralleler Ausführung enthalten sind. Sie können auch Out-of-Line-Bindungen und andere Eigenschaften im Batchbefehl für die Verarbeitung mehrerer Microsoft SQL Server SQL Server Analysis Services-Objekte angeben.

Ausführen von transaktionalen und nicht transaktionalen Batchbefehlen

Der Batchbefehl führt Befehle auf zwei Arten aus:

Transaktion
Wenn das Transaktionsattribute des Batchbefehls auf true festgelegt ist, führt der Batchbefehl alle Befehle aus, die vom Batchbefehl in einem einzelnen Transaktionsbatch enthalten sind.

Wenn ein Befehl in einem Transaktionsbatch fehlschlägt, rollt SQL Server Analysis Services jeden Befehl im Batchbefehl zurück, der ausgeführt wurde, bevor der Befehl fehlgeschlagen ist und der Batchbefehl sofort beendet wird. Alle Befehle im Batchbefehl , die noch nicht ausgeführt werden, werden nicht ausgeführt. Nachdem der Batchbefehl beendet wurde, meldet der Batchbefehl alle Fehler, die für den fehlgeschlagenen Befehl aufgetreten sind.

Nicht transaktional
Wenn das Transaktionsattribute auf "false" festgelegt ist, führt der Batchbefehljeden Befehl aus, der vom Batchbefehl in einer separaten Transaktion enthalten ist. Wenn ein Befehl in einem nichttransactionalen Batch fehlschlägt, führt der Batchbefehl weiterhin Befehle nach dem Befehl aus, der fehlgeschlagen ist. Nachdem der Batchbefehl versucht, alle Befehle auszuführen, die der Batchbefehl enthält, meldet der Batchbefehl alle Fehler, die aufgetreten sind.

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

Hinweis

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

Zurückgeben von Ergebnissen von transaktionalen Batchergebnissen

Ergebnisse aus Befehlen, die in einem Transaktionsbatch ausgeführt werden, werden erst zurückgegeben, wenn der gesamte Batchbefehl abgeschlossen ist. Die Ergebnisse werden nicht zurückgegeben, nachdem jeder Befehl ausgeführt wird, da ein Befehl, der innerhalb eines Transaktionsbatchs fehlschlägt, den gesamten Batchbefehl und alle enthaltenden Befehle zurückgesetzt werden. Wenn alle Befehle erfolgreich starten und ausgeführt werden, enthält das Rückgabeelement des executeResponse-Elements , das von der Execute-Methode für den Batchbefehl zurückgegeben wird, ein Ergebniselement , das wiederum ein Stammelement für jeden erfolgreich ausgeführten Befehl im Batchbefehl enthält. Wenn ein Befehl im Batchbefehl nicht gestartet oder nicht abgeschlossen werden kann, gibt die Execute-Methode einen SOAP-Fehler für den Batchbefehl zurück, der den Fehler des Befehls enthält, der fehlgeschlagen ist.

Zurückgeben von Ergebnissen von nicht transaktionalen Batchergebnissen

Ergebnisse aus Befehlen, die innerhalb eines nichttransactionalen Batchs ausgeführt werden, werden in der Reihenfolge zurückgegeben, in der die Befehle innerhalb des Batchbefehls enthalten sind und wie sie von jedem Befehl zurückgegeben werden. Wenn kein Befehl im Batchbefehl erfolgreich gestartet werden kann, gibt die Execute-Methode einen SOAP-Fehler zurück, der einen Fehler für den Batchbefehl enthält. Wenn mindestens ein Befehl erfolgreich gestartet wird, enthält das Rückgabeelement des executeResponse-Elements , das von der Execute-Methode für den Batchbefehl zurückgegeben wird, ein Ergebniselement , das wiederum ein Stammelement für jeden Befehl enthält, der im Batchbefehl enthalten ist. Wenn ein oder mehrere Befehle in einem nichttransactionalen Batch nicht gestartet oder nicht abgeschlossen werden können, enthält das Stammelement für diesen fehlgeschlagenen Befehl ein Fehlerelement , das den Fehler beschreibt.

Hinweis

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

Verwenden von serieller und paralleler Ausführung

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

Um Befehle parallel auszuführen, fügen Sie die Befehle hinzu, die parallel zur Paralleleigenschaft des Batchbefehls ausgeführt werden sollen. Derzeit kann SQL Server 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.

SQL Server Analysis Services versucht, alle In parallel in der Parallel-Eigenschaft enthaltenen Prozessbefehle auszuführen, kann jedoch nicht garantieren, dass alle enthaltenen Prozessbefehle parallel ausgeführt werden können. Die Instanz analysiert jeden Prozessbefehl , und wenn die Instanz bestimmt, dass der Befehl nicht parallel ausgeführt werden kann, wird der Prozessbefehl in serieller Ausführung ausgeführt.

Hinweis

Um Befehle parallel auszuführen, muss das Transaktionsattribute des Batchbefehls auf true festgelegt werden, da SQL Server 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.

Beschränken paralleler Ausführung

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

Eine Parallel-Eigenschaft enthält beispielsweise die folgenden Befehle in der aufgeführten Sequenz:

  1. Erstellen

  2. Process

  3. Ändern

  4. Process

  5. Process

  6. Process

  7. Löschen

  8. Process

  9. Process

Das maxParallel-Attribut dieser Parallel-Eigenschaft wird auf 2 festgelegt. Daher führt die Instanz die vorherige Liste der Befehle wie in der folgenden Liste beschrieben aus:

  • Befehl 1 wird serial ausgeführt, da Befehl 1 ein Befehl "Erstellen " ist und nur "Prozess "-Befehle parallel ausgeführt werden können.

  • Befehl 2 wird serial ausgeführt, nachdem Befehl 1 abgeschlossen ist.

  • Befehl 3 wird serial ausgeführt, nachdem Befehl 2 abgeschlossen ist.

  • Befehle 4 und 5 werden parallel ausgeführt, nachdem Befehl 3 abgeschlossen ist. Obwohl Befehl 6 auch ein Prozessbefehl 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 seriell ausgeführt, nachdem die Befehle 4 und 5 abgeschlossen wurden.

  • Befehl 7 wird seriell ausgeführt, nachdem Befehl 6 abgeschlossen wurde.

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

Verwenden des Batchbefehls für die Verarbeitung von Objekten

Der Befehl "Batch" enthält mehrere optionale Eigenschaften und Attribute, die speziell zum Verarbeiten mehrerer SQL Server Analysis Services Projekte enthalten sind:

  • Das Attribut "ProcessAffectedObjects" des Batchbefehls gibt an, ob die Instanz auch jedes Objekt verarbeiten soll, das durch einen Prozessbefehl, der in der Batchbefehlsverarbeitung eines angegebenen Objekts enthalten ist, erneut verarbeitet werden muss.

  • Die Bindings-Eigenschaft enthält eine Auflistung von Out-of-Line-Bindungen, die von allen Prozessbefehlen im Batchbefehl verwendet werden.

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

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

  • Die ErrorConfiguration-Eigenschaft gibt die Art und Weise an, in der der Batchbefehl Fehler behandelt, die von allen Im Batchbefehl enthaltenen Prozessbefehlen aufgetreten sind.

    Wichtig

    Ein Prozessbefehl kann die Eigenschaften "Bindings", " DataSource", " DataSourceView" oder "ErrorConfiguration " nicht enthalten, wenn der Befehl "Prozess " in einem Batchbefehl enthalten ist. Wenn Sie diese Eigenschaften für einen Prozessbefehl angeben müssen, geben Sie die erforderlichen Informationen in den entsprechenden Eigenschaften des Batchbefehls an, der den Prozessbefehl enthält.

Weitere Informationen

Batch-Element (XMLA)
Process-Element (XMLA)
Verarbeiten eines mehrdimensionalen Modells (Analysis Services)
Entwickeln mit XMLA in Analysis Services