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 im Batchbefehl 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 Batchbefehl angeben, um mehrere Microsoft SQL Server SQL Server Analysis Services-Objekte zu verarbeiten.

Ausführen von Transaktions- und nichttransactionalen Batchbefehlen

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

Transaktion
Wenn das Transaktions-Attribut des Batchbefehls auf "true" festgelegt ist, führt der Batchbefehl alle Befehle aus, die im Batchbefehl enthalten sind, in einer einzigen Transaktion - einem transaktionalen Batch.

Wenn ein Befehl in einem Transaktionsbatch fehlschlägt, führt SQL Server Analysis Services einen Rollback eines Befehls im Batchbefehl durch, der vor dem fehlgeschlagenen Befehl ausgeführt wurde, und der Batchbefehl wird sofort beendet. Alle Befehle im Batchbefehl , die noch nicht ausgeführt werden, werden nicht ausgeführt. Nach Beendigung des Batchbefehls meldet der Befehl "Batch " alle Fehler, die für den fehlgeschlagenen Befehl aufgetreten sind.

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

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 nichttransaktional 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 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 Batchbefehl abgeschlossen ist. Die Ergebnisse werden nicht nach jedem durchgeführten Befehl zurückgegeben, da jeder Befehl, der innerhalb eines Transaktionsbatches fehlschlägt, dazu führen würde, dass der gesamte Batch-Befehl und alle darin enthaltenen Befehle rückgängig gemacht 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 Batchbefehl zurückgegeben wird, ein Ergebniselement , das wiederum ein Stammelement für jeden erfolgreich ausgeführten Befehl enthält, der im Batchbefehl enthalten ist. Wenn ein Befehl im Batchbefehl nicht gestartet werden kann oder nicht abgeschlossen werden kann, gibt die Execute-Methode einen SOAP-Fehler für den Batchbefehl zurück, der den Fehler des fehlgeschlagenen Befehls enthält.

Zurückgeben von Ergebnissen aus nicht-transaktionalen Batchverarbeitungen

Ergebnisse von Befehlen, die in einem nichttransactionalen Batch ausgeführt werden, werden in der Reihenfolge zurückgegeben, in der die Befehle im Batchbefehl 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 wurde, 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 mindestens ein Befehl in einem nichttransaktionellen Batch nicht gestartet oder nicht abgeschlossen werden kann, 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 nichttransaktionale Batch als erfolgreich ausgeführt betrachtet, auch wenn jeder befehl, der im nichttransactionalen Batch enthalten ist, einen Fehler in den Ergebnissen des Batchbefehls zurückgibt.

Verwenden der seriellen und parallelen Ausführung

Sie können den Befehl "Batch " verwenden, um enthaltene Befehle in serieller oder paralleler Ausführung auszuführen. Wenn die Befehle serial ausgeführt werden, kann der nächste Befehl, der im Befehl "Batch " enthalten ist, erst gestartet werden, wenn der aktuell ausgeführte Befehl im Befehl "Batch " 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 können 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 Prozessbefehle auszuführen, die in der Parallel-Eigenschaft enthalten sind, können aber nicht garantieren, dass alle enthaltenen Prozessbefehle parallel ausgeführt werden können. Die Instanz analysiert jeden Prozessbefehl , und wenn die Instanz feststellt, dass der Befehl nicht parallel ausgeführt werden kann, wird der Prozessbefehl serial ausgeführt.

Hinweis

Um Befehle parallel auszuführen, muss das Transaction-Attribut 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.

Einschränken der parallelen Ausführung

Eine SQL Server Analysis Services-Instanz versucht, so viele Process-Befehle 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 Process-Befehle einschränken, indem Sie das maxParallel-Attribut der 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. Prozess

  3. Alter

  4. Prozess

  5. Prozess

  6. Prozess

  7. Löschen

  8. Prozess

  9. Prozess

Das Attribut "maxParallel" 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 Befehl "Erstellen " ist und nur Prozessbefehle 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 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 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 Befehl "Batch " enthält mehrere optionale Eigenschaften und Attribute, die speziell zur Unterstützung der Verarbeitung mehrerer SQL Server Analysis Services-Projekte gehören:

  • Das ProcessAffectedObjects-Attribut des Batchbefehls gibt an, ob die Instanz auch ein Objekt verarbeiten soll, das eine Erneute Verarbeitung als Ergebnis eines Prozessbefehls erfordert, der in der Batchbefehlsverarbeitung eines angegebenen Objekts enthalten ist.

  • 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 Prozessbefehlen im Batchbefehl verwendet wird.

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

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

    Von Bedeutung

    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 Befehl "Prozess " enthält.

Siehe auch

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