Transaktioner (Azure Synapse Analytics och Microsoft Fabric)
gäller för:Azure Synapse AnalyticsAnalytics Platform System (PDW)Warehouse i Microsoft Fabric
En transaktion är en grupp med en eller flera databasinstruktioner som antingen är helt genomförda eller helt återställda. Varje transaktion är atomisk, konsekvent, isolerad och varaktig (ACID). Om transaktionen lyckas checkas alla instruktioner i den in. Om transaktionen misslyckas, som är minst en av -uttrycken i gruppen misslyckas, återställs hela gruppen.
Början och slutet av transaktionerna beror på inställningen AUTOCOMMIT och satserna BEGIN TRANSACTION, COMMIT och ROLLBACK.
Följande typer av transaktioner stöds:
Explicita transaktioner börja med BEGIN TRANSACTION-instruktionen och sluta med COMMIT- eller ROLLBACK-instruktionen.
Transaktioner för automatisk incheckning initieras automatiskt inom en session och börjar inte med INSTRUKTIONEN BEGIN TRANSACTION. När inställningen AUTOCOMMIT är PÅ körs varje instruktion i en transaktion och ingen explicit COMMIT eller ROLLBACK krävs. När inställningen AUTOCOMMIT är AV krävs en COMMIT- eller ROLLBACK-instruktion för att fastställa resultatet av transaktionen. Autocommit-transaktioner börjar omedelbart efter en COMMIT- eller ROLLBACK-instruktion, eller efter en SET AUTOCOMMIT OFF-instruktion.
Transact-SQL syntaxkonventioner
Not
Mer information om transaktioner i Microsoft Fabric finns i Transaktioner i Microsoft Fabric.
Syntax
BEGIN TRANSACTION [;]
COMMIT [ TRAN | TRANSACTION | WORK ] [;]
ROLLBACK [ TRAN | TRANSACTION | WORK ] [;]
SET AUTOCOMMIT { ON | OFF } [;]
SET IMPLICIT_TRANSACTIONS { ON | OFF } [;]
Argument
PÅBÖRJA TRANSAKTION
Markerar startpunkten för en explicit transaktion.
COMMIT [ WORK ]
Markerar slutet på en explicit transaktion eller autocommit-transaktion. Den här instruktionen gör att ändringarna i transaktionen checkas in permanent i databasen. Instruktionen COMMIT är identisk med COMMIT WORK, COMMIT TRAN och COMMIT TRANSACTION.
ÅTERSTÄLLNING [ ARBETE ]
Återställer en transaktion till början av transaktionen. Inga ändringar för transaktionen har checkats in i databasen. Instruktionen ROLLBACK är identisk med ROLLBACK WORK, ROLLBACK TRAN och ROLLBACK TRANSACTION.
ANGE AUTOCOMMIT { PÅ | AV }
Avgör hur transaktioner kan starta och avsluta.
PÅ
Varje instruktion körs under sin egen transaktion och ingen explicit COMMIT- eller ROLLBACK-instruktion krävs. Explicita transaktioner tillåts när AUTOCOMMIT är PÅ.
BORT
Azure Synapse Analytics och Microsoft Fabric initierar automatiskt en transaktion när en transaktion inte redan pågår. Efterföljande instruktioner körs som en del av transaktionen och en COMMIT eller ROLLBACK är nödvändig för att fastställa resultatet av transaktionen. Så snart en transaktion checkar in eller återställs under det här driftläget förblir läget AV, en ny transaktion initieras. Explicita transaktioner tillåts inte när AUTOCOMMIT är AV.
Om du ändrar inställningen AUTOCOMMIT i en aktiv transaktion påverkar inställningen den aktuella transaktionen och påverkar inte förrän transaktionen har slutförts.
Om AUTOCOMMIT är PÅ har en annan SET AUTOCOMMIT ON-instruktion ingen effekt. På samma sätt, om AUTOCOMMIT är AV, har körning av en annan SET AUTOCOMMIT OFF ingen effekt.
STÄLL IN IMPLICIT_TRANSACTIONS { ON | OFF }
Detta växlar samma lägen som SET AUTOCOMMIT. När du är PÅ anger SET IMPLICIT_TRANSACTIONS anslutningen i implicit transaktionsläge. När den är AV returneras anslutningen till automatiskt återtagandeläge. Mer information finns i SET IMPLICIT_TRANSACTIONS (Transact-SQL).
Behörigheter
Inga specifika behörigheter krävs för att köra transaktionsrelaterade instruktioner. Behörigheter krävs för att köra -uttrycken i transaktionen.
Felhantering
Om COMMIT eller ROLLBACK körs och det inte finns någon aktiv transaktion utlöses ett fel.
Om en BEGIN TRANSACTION körs medan en transaktion redan pågår utlöses ett fel. Detta kan inträffa om en BEGIN TRANSACTION inträffar efter en lyckad BEGIN TRANSACTION-instruktion eller när sessionen är under SET AUTOCOMMIT OFF.
Om ett annat fel än ett körningsinstruktor förhindrar att en explicit transaktion slutförs, återställer databasmotorn automatiskt transaktionen och frigör alla resurser som innehas av transaktionen. Om klientens nätverksanslutning till exempel är bruten eller klienten loggar ut från programmet återställs alla icke-begärda transaktioner för anslutningen när nätverket meddelar instansen av pausen.
Om ett körningsuttrycksfel inträffar i en batch fungerar Azure Synapse Analytics och Microsoft Fabric konsekventa med SQL ServerXACT_ABORT inställt på ON och hela transaktionen återställs. Mer information om inställningen XACT_ABORT finns i SET XACT_ABORT (Transact-SQL).
Allmänna kommentarer
En session kan bara köra en transaktion vid en viss tidpunkt. spara punkter och kapslade transaktioner stöds inte.
Det är programmerarens ansvar att endast utfärda COMMIT vid en tidpunkt då alla data som refereras till av transaktionen är logiskt korrekta.
När en session avslutas innan en transaktion slutförs återställs transaktionen.
Transaktionslägen hanteras på sessionsnivå. Om en session till exempel påbörjar en explicit transaktion eller ställer in AUTOCOMMIT till AV, eller anger IMPLICIT_TRANSACTIONS till PÅ, påverkar den inte transaktionslägena för någon annan session.
Begränsningar och begränsningar
Du kan inte återställa en transaktion när en COMMIT-instruktion har utfärdats eftersom dataändringarna har gjorts som en permanent del av databasen.
Kommandona CREATE DATABASE (Azure Synapse Analytics) och DROP DATABASE (Transact-SQL) kan inte användas i en explicit transaktion.
Azure Synapse Analytics och Microsoft Fabric har ingen transaktionsdelningsmekanism. Detta innebär att vid en viss tidpunkt kan endast en session utföra arbete på alla transaktioner i systemet.
Låsningsbeteende
Låsning säkerställer transaktionernas integritet och upprätthåller konsekvensen i databaser när flera användare har åtkomst till data samtidigt. Låsning används av både implicita och explicita transaktioner. Varje transaktionsbegäran låser olika typer av resurser, till exempel tabeller eller databaser som transaktionen är beroende av.
Alla lås är på tabellnivå eller högre. Låsen blockerar andra transaktioner från att ändra resurserna på ett sätt som skulle orsaka problem för transaktionen som begär låset. Varje transaktion frigör sina lås när den inte längre har ett beroende av de låsta resurserna. explicita transaktioner behåller lås tills transaktionen slutförs när den antingen checkas in eller återställs.
Exempel:
A. Använda en explicit transaktion
BEGIN TRANSACTION;
DELETE FROM HumanResources.JobCandidate
WHERE JobCandidateID = 13;
COMMIT;
B. Återställa en transaktion
I följande exempel visas effekten av att återställa en transaktion. I det här exemplet återställer ROLLBACK-instruktionen INSERT-instruktionen, men den skapade tabellen finns fortfarande.
CREATE TABLE ValueTable (id INT);
BEGIN TRANSACTION;
INSERT INTO ValueTable VALUES(1);
INSERT INTO ValueTable VALUES(2);
ROLLBACK;
C. Ange AUTOCOMMIT
I följande exempel anges inställningen AUTOCOMMIT till ON
.
SET AUTOCOMMIT ON;
I följande exempel anges inställningen AUTOCOMMIT till OFF
.
SET AUTOCOMMIT OFF;
D. Använda en implicit transaktion med flera instruktioner
SET AUTOCOMMIT OFF;
CREATE TABLE ValueTable (id INT);
INSERT INTO ValueTable VALUES(1);
INSERT INTO ValueTable VALUES(2);
COMMIT;