Freigeben über


Transaktionstypen

Microsoft SQL Server Compact unterstützt zwei Transaktionstypen: explizite Transaktionen und Autocommit-Transaktionen.

Explizite Transaktionen

Eine explizite Transaktion ist eine Transaktion, deren Beginn und Ende explizit angegeben wird. Dies kann entweder mithilfe von SQL-Anweisungen oder mit Datenbank-API-Funktionen erfolgen.

SQL-Anweisungen

Bei Verwendung von Visual Studio können die folgenden SQL-Anweisungen verwendet werden, um explizite Transaktionen zu definieren:

  • BEGIN TRANSACTION

    Markiert den Ausgangspunkt einer expliziten Transaktion für eine Verbindung.

  • COMMIT TRANSACTION

    Beendet eine Transaktion erfolgreich, wenn keine Fehler festgestellt wurden. Alle durch die Transaktion geänderten Daten werden zu einem permanenten Bestandteil der Datenbank. Ressourcen, die von der Transaktion beansprucht wurden, werden freigegeben.

  • ROLLBACK TRANSACTION

    Löscht eine Transaktion, in der Fehler festgestellt wurden. Alle durch die Transaktion geänderten Daten werden in den Zustand zurückversetzt, den sie bei Beginn der Transaktion hatten. Ressourcen, die von der Transaktion beansprucht wurden, werden freigegeben.

ADO.NET und OLE DB

Explizite Transaktionen können auch in ADO.NET und OLE DB verwendet werden.

In ADO.NET verwenden Sie die BeginTransaction-Methode für ein SqlCeConnection-Objekt, um eine explizite Transaktion zu starten. Zum Beenden der Transaktion rufen Sie die Commit- oder die Rollback-Methode des SqlCeTransaction-Objekts auf.

In OLE DB rufen Sie die ITransactionLocal::StartTransaction-Methode auf, um eine Transaktion zu starten. Rufen Sie entweder die ITransaction::Commit-Methode oder die ITransaction::Abort,-Methode auf, wobei fRetaining auf FALSE festgelegt wird, um die Transaktion zu beenden, ohne automatisch eine weitere Transaktion zu starten. Beachten Sie, dass Sie mehrere Transaktionen für eine einzige ADO.NET-Verbindung erstellen und sie einzelnen Befehlen zuweisen können.

Wichtig

Wenn Sie die ADO.NET-API verwenden, um einen Commit für Transaktionen auszuführen, müssen alle offenen Datenleser und Resultsets innerhalb dieser Transaktion geschlossen werden.

Autocommit-Transaktionen

Der Autocommit-Modus ist der Standard-Transaktionsverwaltungsmodus in SQL Server Compact. Für jede SQL-Anweisung wird ein Commit oder ein Rollback ausgeführt, wenn sie beendet ist. Für eine SQL Server Compact-Verbindung gilt der Autocommit-Modus, sofern dieser Standardmodus nicht durch explizite Transaktionen außer Kraft gesetzt wurde. Der Autocommit-Modus ist auch der Standardmodus für ADO.NET und OLE DB.

Für eine SQL Server Compact-Verbindung gilt der Autocommit-Modus, bis eine explizite Transaktion durch eine BEGIN TRANSACTION-Anweisung gestartet wurde. Nachdem ein Commit oder Rollback für die explizite Transaktion ausgeführt wurde, kehrt SQL Server Compact zum Autocommit-Modus zurück.

Kompilierungs- und Laufzeitfehler

Anders als SQL Server verarbeitet SQL Server Compact Anweisungen nicht in Batches. SQL Server Compact verarbeitet die Anweisungen nacheinander und führt jede Anweisung einzeln aus. Wenn eine bestimmte Anweisung einen Fehler zurückgibt, wirkt sich dies nicht auf die anderen Anweisungen in diesem Batch aus. Wenn beispielsweise Visual Studio verwendet wird, um die folgenden Abfragen in SQL Server Compact auszuführen, werden die beiden ersten Abfragen erfolgreich ausgeführt. Bei der dritten Abfrage tritt jedoch aufgrund eines Syntaxfehlers ein Fehler auf.

CREATE TABLE TestData (col int);

INSERT INTO TestData VALUES (1);

INSERTT INTO TestData VALUES (1);

Hinweis

Wenn diese Abfragen als Batch an SQL Server gesendet würden, würden alle Abfragen fehlschlagen, da sie zusammen analysiert werden. Der Syntaxfehler verhindert, dass SQL Server einen Ausführungsplan für den Batch erstellt.

Für Transaktionen auf höherer Ebene, in denen ein Vorgang erfolgt, wird weder ein Rollback noch ein Commit ausgeführt.

Siehe auch

Konzepte

Transaktionen (SQL Server Compact)

Kontrollieren von Transaktionen

Andere Ressourcen

Transaktionen und Konnektivität