Explizite Transaktionen

Eine explizite Transaktion ist eine Transaktion, in der Sie sowohl den Beginn als auch das Ende explizit definieren.

DB-Library-Anwendungen und Transact-SQL-Skripts verwenden die Transact-SQL-Anweisungen BEGIN TRANSACTION, COMMIT TRANSACTION, COMMIT WORK, ROLLBACK TRANSACTION oder ROLLBACK WORK, um explizite Transaktionen zu definieren.

  • BEGIN TRANSACTION
    Kennzeichnet den Anfangspunkt einer expliziten Transaktion für eine Verbindung.

  • COMMIT TRANSACTION oder COMMIT WORK
    Wird verwendet, um eine Transaktion erfolgreich zu beenden, wenn keine Fehler aufgetreten sind. Alle Datenänderungen, die in der Transaktion vorgenommen wurden, werden zum dauerhaften Bestandteil der Datenbank. Ressourcen, die von der Transaktion beansprucht wurden, werden freigegeben.

  • ROLLBACK TRANSACTION oder ROLLBACK WORK
    Wird verwendet, um eine Transaktion rückgängig zu machen, in der Fehler aufgetreten sind. Alle Daten, die von der Transaktion geändert wurden, werden in den Status zurückgesetzt, in dem sie sich zu Beginn der Transaktion befanden. Ressourcen, die von der Transaktion beansprucht wurden, werden freigegeben.

Sie können auch in OLE DB explizite Transaktionen verwenden. Rufen Sie zum Starten einer Transaktion die ITransactionLocal::StartTransaction-Methode auf. Rufen Sie entweder die ITransaction::Commit- oder die ITransaction::Abort-Methode auf. Dabei muss fRetaining auf FALSE festgelegt werden, um die Transaktion zu beenden, ohne automatisch eine neue Transaktion zu starten.

Verwenden Sie in ADO die BeginTrans-Methode für ein Connection-Objekt, um eine explizite Transaktion zu starten. Um die Transaktion zu beenden, rufen Sie die CommitTrans- oder RollbackTrans-Methode des Connection-Objekts auf.

Verwenden Sie im verwalteten Anbieter SqlClient (ADO.NET) die BeginTransaction-Methode für ein SqlConnection-Objekt, um eine explizite Transaktion zu starten. Um die Transaktion zu beenden, rufen Sie die Commit()- oder Rollback()-Methode für das SqlTransaction-Objekt auf.

Die ODBC-API unterstützt keine expliziten Transaktionen, sondern ausschließlich Autocommittransaktionen und implizite Transaktionen.

Der explizite Transaktionsmodus dauert nur so lange wie die Transaktion selbst. Am Ende der Transaktion kehrt die Verbindung zu dem Transaktionsmodus zurück, in dem sie sich vor Beginn der expliziten Transaktion befand, also entweder zum impliziten oder zum Autocommitmodus.

HinweisHinweis

In einer MARS-Sitzung (Multiple Active Result Sets) wird eine mit der Transact-SQL BEGIN TRANSACTION-Anweisung gestartete explizite Transaktion zu einer Transaktion mit Batchbereich. Wenn für die Transaktion mit Batchbereich beim Beenden des Batches noch kein Commit oder Rollback ausgeführt wurde, führt SQL Server ein automatisches Rollback der Transaktion aus. Weitere Informationen finden Sie unter Steuern von Transaktionen (Datenbankmodul) und Transaktionsanweisungen (Transact-SQL).