Freigeben über


Verwalten von Transaktionen (XMLA)

Jeder xml for Analysis (XMLA)-Befehl, der an eine Instanz von Microsoft SQL Server Analysis Services gesendet wird, wird im Kontext einer Transaktion für die aktuelle implizite oder explizite Sitzung ausgeführt. Um jede dieser Transaktionen zu verwalten, verwenden Sie die Befehle "BeginTransaction", "CommitTransaction" und "RollbackTransaction" . Mithilfe dieser Befehle können Sie implizite oder explizite Transaktionen erstellen, die Transaktionsreferenzanzahl ändern sowie Transaktionen starten, übernehmen oder zurücksetzen.

Implizite und explizite Transaktionen

Eine Transaktion ist implizit oder explizit:

Implizite Transaktion
Analysis Services erstellt eine implizite Transaktion für einen XMLA-Befehl, wenn der BeginTransaction Befehl nicht den Start einer Transaktion angibt. Analysis Services übernimmt immer eine implizite Transaktion, wenn der Befehl erfolgreich ist, und setzt eine implizite Transaktion zurück, wenn der Befehl fehlschlägt.

Explizite Transaktion
Analysis Services erstellt eine explizite Transaktion, wenn der BeginTransaction Befehl eine Transaktion startet. Analysis Services führt jedoch nur einen Commit für eine explizite Transaktion durch, wenn ein CommitTransaction Befehl gesendet wird, und setzt eine explizite Transaktion zurück, wenn ein RollbackTransaction Befehl gesendet wird.

Darüber hinaus setzt Analysis Services implizite und explizite Transaktionen zurück, wenn die aktuelle Sitzung endet, bevor die aktive Transaktion abgeschlossen ist.

Transaktionen und Referenzanzahlen

Analysis Services verwaltet für jede Sitzung eine Transaktionsverweisanzahl. Analysis Services unterstützt jedoch keine geschachtelten Transaktionen, in denen pro Sitzung nur eine aktive Transaktion verwaltet wird. Wenn die aktuelle Sitzung nicht über eine aktive Transaktion verfügt, wird die Transaktionsreferenzanzahl auf Null festgelegt.

Mit anderen Worten: Jeder BeginTransaction Befehl erhöht die Referenzanzahl um eins, während jeder CommitTransaction Befehl die Referenzanzahl um eine erhöht. Wenn ein CommitTransaction Befehl die Transaktionsanzahl auf Null festlegt, wird die Transaktion von Analysis Services commits ausgeführt.

RollbackTransaction Der Befehl setzt die aktive Transaktion jedoch unabhängig vom aktuellen Wert der Transaktionsreferenzanzahl zurück. Mit anderen Worten, ein einzelner RollbackTransaction Befehl rollt die aktive Transaktion zurück, unabhängig davon, wie viele BeginTransaction Befehle oder CommitTransaction Befehle gesendet wurden, und legt die Transaktionsverweisanzahl auf Null fest.

Beginnen einer Transaktion

Der BeginTransaction Befehl beginnt eine explizite Transaktion für die aktuelle Sitzung und erhöht die Transaktionsreferenzanzahl für die aktuelle Sitzung um eine. Alle nachfolgenden Befehle werden als innerhalb der aktiven Transaktion betrachtet, bis entweder genügend CommitTransaction Befehle gesendet werden, um die aktive Transaktion zu übernehmen, oder ein einzelner RollbackTransaction Befehl wird gesendet, um die aktive Transaktion rückgängig zu machen.

Commit für eine Transaktion

Der CommitTransaction Befehl setzt die Ergebnisse von Befehlen fest, die ausgeführt werden, nachdem der BeginTransaction Befehl in der aktuellen Sitzung ausgeführt wurde. Jeder CommitTransaction Befehl erhöht die Referenzanzahl für aktive Transaktionen in einer Sitzung. Wenn ein CommitTransaction Befehl die Referenzanzahl auf Null festlegt, wird die aktive Transaktion von Analysis Services commits ausgeführt. Wenn keine aktive Transaktion vorhanden ist (d. h. die Transaktionsreferenzanzahl für die aktuelle Sitzung ist bereits auf Null festgelegt), führt ein CommitTransaction Befehl zu einem Fehler.

Rollback einer Transaktion

Der RollbackTransaction Befehl setzt die Ergebnisse von Befehlen zurück, die ausgeführt werden, nachdem der BeginTransaction Befehl in der aktuellen Sitzung ausgeführt wurde. Der RollbackTransaction Befehl setzt die aktive Transaktion unabhängig von der aktuellen Transaktionsreferenzanzahl zurück und legt die Transaktionsverweisanzahl auf Null fest. Wenn keine aktive Transaktion vorhanden ist (d. h. die Transaktionsreferenzanzahl für die aktuelle Sitzung ist bereits auf Null festgelegt), führt ein RollbackTransaction Befehl zu einem Fehler.

Siehe auch

Entwickeln mit XMLA in Analysis Services