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