Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:Azure Synapse Analytics
Analytics Platform System (PDW)
Eine Transaktion ist eine Gruppe von mindestens einer Datenbankanweisung, für die als Ganzes entweder ein Commit oder ein Rollback ausgeführt wird. Alle Transaktionen sind unteilbar, konsistent, isoliert und von Dauer (atomic, consistent, isolated, durable: ACID). Wenn die Transaktion erfolgreich ist, wird für alle Anweisungen darin ein Commit ausgeführt. Wenn die Transaktion fehlschlägt, d.h. bei mindestens einer Anweisung in der Gruppe ein Fehler auftritt, wird für die gesamte Gruppe ein Rollback ausgeführt.
Hinweis
Der SET AUTOCOMMIT Befehl wird in Microsoft Fabric Data Warehouse nicht unterstützt. Weitere Informationen zu Transaktionen, Isolation, Parallelität und Konsistenz in Microsoft Fabric Data Warehouse finden Sie stattdessen unter Transaktionen in Fabric Data Warehouse.
Der Anfang und das Ende der Transaktionen hängen von der Einstellung und den AUTOCOMMITBEGIN TRANSACTIONAnweisungen COMMITab ROLLBACK .
Die folgenden Arten von Transaktionen werden unterstützt:
Explizite Transaktionen beginnen mit der
BEGIN TRANSACTIONAnweisung und enden mit derCOMMITOder-AnweisungROLLBACK.Transaktionen mit automatischem Commit werden automatisch innerhalb einer Sitzung initiiert und beginnen nicht mit der
BEGIN TRANSACTIONAnweisung.- Wenn die
AUTOCOMMITEinstellung lautetON, wird jede Anweisung in einer Transaktion ausgeführt, und es ist keine expliziteCOMMIToderROLLBACKerforderliche Anweisung erforderlich. - Wenn die
AUTOCOMMITEinstellung lautetOFF, ist eine oderROLLBACKeineCOMMITAnweisung erforderlich, um das Ergebnis der Transaktion zu bestimmen. AutoCommit-Transaktionen beginnen unmittelbar nach einerCOMMITOder-AnweisungROLLBACKoder nach einerSET AUTOCOMMIT OFFAnweisung.
- Wenn die
Transact-SQL-Syntaxkonventionen
Syntax
BEGIN TRANSACTION [;]
COMMIT [ TRAN | TRANSACTION | WORK ] [;]
ROLLBACK [ TRAN | TRANSACTION | WORK ] [;]
SET AUTOCOMMIT { ON | OFF } [;]
SET IMPLICIT_TRANSACTIONS { ON | OFF } [;]
Argumente
TRANSAKTION BEGINNEN
Markiert den Startpunkt einer expliziten Transaktion.
COMMIT [ ARBEIT ]
Markiert das Ende einer expliziten oder AUTOCOMMIT-Transaktion. Diese Anweisung bewirkt, dass die Änderungen in der Transaktion endgültig an die Datenbank übergeben werden. Die Anweisung COMMIT ist identisch mit COMMIT WORK, COMMIT TRAN, und COMMIT TRANSACTION.
ROLLBACK [ ARBEIT ]
Führt für eine Transaktion einen Rollback zum Anfang der Transaktion aus. Es werden keine Änderungen der Transaktion an die Datenbank übergeben. Die Anweisung ROLLBACK ist identisch mit ROLLBACK WORK, ROLLBACK TRAN, und ROLLBACK TRANSACTION.
AUTOCOMMIT { ON | FESTLEGEN OFF }
Bestimmt, wie Transaktionen gestartet und beendet werden können.
Wenn Sie die AUTOCOMMIT Einstellung innerhalb einer aktiven Transaktion ändern, wirkt sich die Einstellung auf die aktuelle Transaktion aus und wird erst wirksam, wenn die Transaktion abgeschlossen ist.
Wenn AUTOCOMMIT dies der Grund ist, hat ONdie Ausführung einer anderen SET AUTOCOMMIT ON Anweisung keine Auswirkung. Ebenso AUTOCOMMITOFFhat die Ausführung einer anderen SET AUTOCOMMIT OFF Ausführung keine Auswirkung.
EIN
Jede Anweisung wird unter einer eigenen Transaktion ausgeführt, und es ist keine explizite COMMIT oder ROLLBACK Anweisung erforderlich. Explizite Transaktionen sind zulässig, wenn AUTOCOMMIT dies der Wert ist ON.
OFF
Azure Synapse Analytics initiiert automatisch eine Transaktion, wenn eine Transaktion noch nicht ausgeführt wird. Alle nachfolgenden Anweisungen werden als Teil der Transaktion ausgeführt und ein COMMIT oder ROLLBACK ist erforderlich, um das Ergebnis der Transaktion zu bestimmen. Sobald eine Transaktion einen Commit unter diesem Vorgangsmodus vorschlägt oder zurückgesetzt wird, bleibt OFFder Modus , eine neue Transaktion wird initiiert. Explizite Transaktionen sind nicht zulässig, wenn AUTOCOMMIT dies der Wert ist OFF.
SET IMPLICIT_TRANSACTIONS { ON | OFF }
Dadurch werden die gleichen Modi wie SET AUTOCOMMIT. Wenn ON, SET IMPLICIT_TRANSACTIONS legt die Verbindung in den impliziten Transaktionsmodus fest. Wenn OFF, gibt sie die Verbindung mit dem AutoCommit-Modus zurück. Weitere Informationen finden Sie unter SET IMPLICIT_TRANSACTIONS (Transact-SQL).
Berechtigungen
Es sind keine speziellen Berechtigungen erforderlich, um die transaktionsbezogenen Anweisungen auszuführen. Berechtigungen sind erforderlich, um die Anweisungen innerhalb der Transaktion auszuführen.
Fehlerbehandlung
Wenn COMMIT oder ROLLBACK ausgeführt wird und keine aktive Transaktion vorhanden ist, wird ein Fehler ausgelöst.
Wenn eine BEGIN TRANSACTION Transaktion ausgeführt wird, während eine Transaktion bereits ausgeführt wird, wird ein Fehler ausgelöst. Dies kann auftreten, wenn nach BEGIN TRANSACTION einer erfolgreichen BEGIN TRANSACTION Anweisung oder wenn die Sitzung unter SET AUTOCOMMIT OFFist.
Wenn ein anderer Fehler als ein Laufzeitausweisungsfehler den erfolgreichen Abschluss einer expliziten Transaktion verhindert, setzt das Datenbankmodul die Transaktion automatisch zurück und gibt alle Ressourcen frei, die von der Transaktion gehalten werden. Wenn beispielsweise die Netzwerkverbindung des Clients unterbrochen ist oder sich der Client von der Anwendung abmeldet, werden alle nicht ausgeschriebenen Transaktionen für die Verbindung zurückgesetzt, wenn das Netzwerk die Instanz des Umbruchs benachrichtigt.
Wenn ein Laufzeit-Anweisungsfehler in einem Batch auftritt, verhält sich Azure Synapse Analytics konsistent mit SQL Server XACT_ABORT , ON und die gesamte Transaktion wird zurückgesetzt. Weitere Informationen zur XACT_ABORT Einstellung finden Sie unter SET XACT_ABORT (Transact-SQL).
Bemerkungen
Eine Sitzung kann jeweils nur eine Transaktion zu einem bestimmten Zeitpunkt ausführen. Sicherungspunkte und geschachtelte Transaktionen werden nicht unterstützt.
Es liegt in der Verantwortung des Programmierers, nur an einem Punkt zu stellen COMMIT , an dem alle daten, auf die von der Transaktion verwiesen wird, logisch korrekt sind.
Wenn eine Sitzung beendet wird, bevor eine Transaktion abgeschlossen ist, wird für die Transaktion ein Rollback ausgeführt.
Die Transaktionsmodi werden auf der Sitzungsebene verwaltet. Wenn z. B. eine Sitzung eine explizite Transaktion beginnt oder auf diese festgelegt AUTOCOMMITOFFist IMPLICIT_TRANSACTIONSON, hat sie keine Auswirkungen auf die Transaktionsmodi einer anderen Sitzung.
Einschränkungen
Sie können ein Rollback einer Transaktion nicht ausführen, nachdem eine COMMIT Anweisung ausgestellt wurde, da die Datenänderungen dauerhaft teil der Datenbank vorgenommen wurden.
Die Befehle CREATE DATABASE und DROP DATABASE (Transact-SQL) können nicht innerhalb einer expliziten Transaktion verwendet werden.
Azure Synapse Analytics verfügt nicht über einen Mechanismus für die Transaktionsfreigabe. Das bedeutet, dass zu einem bestimmten Zeitpunkt nur eine Sitzung an einer Transaktion im System arbeiten kann.
Sperrverhalten
Sperren stellen die Integrität von Transaktionen sicher und sorgen für die Konsistenz der Datenbanken, wenn mehrere Benutzer*innen gleichzeitig auf Daten zugreifen. Sperren werden sowohl von impliziten als auch von expliziten Transaktionen verwendet. Jede Transaktion fordert Sperren verschiedener Typen für die Ressourcen, z.B. Tabellen oder Datenbanken an, von denen die Transaktion abhängt.
Alle Sperren sind auf Ebene der Tabelle oder höher festgelegt. Diese Sperren verhindern, dass die Ressourcen durch andere Transaktionen in einer Weise geändert werden, die zu Problemen für die Transaktion führen würde, die die Sperre angefordert hat. Jede Transaktion hebt ihre Sperren wieder auf, wenn sie nicht mehr über eine Abhängigkeit von den gesperrten Ressourcen verfügt. Explizite Transaktionen behalten Sperren bis zum Abschluss der Transaktion bei, wenn für diese entweder ein Commit oder ein Rollback ausgeführt wird.
Examples
A. Verwenden einer expliziten Transaktion
BEGIN TRANSACTION;
DELETE FROM HumanResources.JobCandidate
WHERE JobCandidateID = 13;
COMMIT;
B. Zurücksetzen einer geöffneten Transaktion
Im folgenden Beispiel werden die Auswirkungen des Rollbacks einer Transaktion veranschaulicht. In diesem Beispiel wird die ROLLBACK Anweisung zurückgesetzt INSERT , aber die erstellte Tabelle ist weiterhin vorhanden.
CREATE TABLE ValueTable (id INT);
BEGIN TRANSACTION;
INSERT INTO ValueTable VALUES(1);
INSERT INTO ValueTable VALUES(2);
ROLLBACK;
C. AutoCOMMIT festlegen
Im folgenden Beispiel wird die AUTOCOMMIT Einstellung auf ON.
SET AUTOCOMMIT ON;
Im folgenden Beispiel wird die AUTOCOMMIT Einstellung auf OFF.
SET AUTOCOMMIT OFF;
D: Verwenden einer impliziten Transaktion mit mehreren Anweisungen
SET AUTOCOMMIT OFF;
CREATE TABLE ValueTable (id INT);
INSERT INTO ValueTable VALUES(1);
INSERT INTO ValueTable VALUES(2);
COMMIT;