Freigeben über


Transaktionstypen

Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 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 SQL Server Management 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- oder die ITransaction::Abort-Methode auf, wobei fRetaining auf FALSE festgelegt wird, um die Transaktion zu beenden, ohne automatisch eine weitere Transaktion zu starten.

Hinweis:
Sie können mehrere Transaktionen für eine einzelne ADO.NET-Verbindung erstellen und sie einzelnen Befehlen zuweisen.
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 Edition. Für jede SQL-Anweisung wird ein Commit oder ein Rollback ausgeführt, wenn sie beendet ist. Für eine SQL Server Compact Edition-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 Edition-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 Edition zum Autocommit-Modus zurück.

Kompilierungs- und Laufzeitfehler

Anders als Microsoft SQL Server verarbeitet SQL Server Compact Edition Anweisungen nicht in Batches. SQL Server Compact Edition verarbeitet die Anweisungen nacheinander und führt jede Anweisung einzeln aus. Wenn eine bestimmte Anweisung einen Fehler zurückgibt, wirkt sich dies nicht auf den Status der anderen Anweisungen dieses Batches aus. Wenn beispielsweise SQL Server Management Studio verwendet wird, um die folgenden Abfragen in SQL Server Compact Edition 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ürde der Fehler für alle Abfragen gelten, da die Abfragen zusammen analysiert würden. Der Syntaxfehler würde bewirken, dass SQL Server keinen Ausführungsplan für den gesamten Batch erstellen kann.

Transaktionen höherer Ebene, in denen ein Vorgang ausgeführt wird, führen nicht zu einem Rollback oder einem Commit der Transaktion.

Siehe auch

Konzepte

Transaktionen (SQL Server Compact Edition)
Kontrollieren von Transaktionen
Transaktionen und Konnektivität

Hilfe und Information

Informationsquellen für SQL Server Compact Edition