Dela via


Transaktioner (Azure Synapse Analytics)

gäller för:Azure Synapse AnalyticsAnalytics Platform System (PDW)

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.

Not

Kommandot SET AUTOCOMMIT stöds inte i Microsoft Fabric Data Warehouse. Mer information om transaktioner, isolering, samtidighet och konsekvens i Microsoft Fabric Data Warehouse finns i stället Transaktioner i Fabric Data Warehouse.

Början och slutet av transaktioner beror på AUTOCOMMIT inställningen och BEGIN TRANSACTION- och COMMITROLLBACK -uttrycken.

Följande typer av transaktioner stöds:

  • Explicita transaktioner börjar med -instruktionen BEGIN TRANSACTION och slutar med instruktionen COMMIT eller ROLLBACK .

  • Transaktioner för automatisk incheckning initieras automatiskt inom en session och börjar inte med -instruktionen BEGIN TRANSACTION .

    • När inställningen AUTOCOMMIT är ONkörs varje instruktion i en transaktion och ingen explicit COMMIT eller ROLLBACK nödvändig.
    • När inställningen AUTOCOMMIT är OFFkrävs en eller ROLLBACK -COMMITinstruktion för att fastställa resultatet av transaktionen. Autocommit-transaktioner börjar omedelbart efter en COMMIT -instruktion, ROLLBACK eller efter en SET AUTOCOMMIT OFF -instruktion.

Transact-SQL syntaxkonventioner

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 TRANoch 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 TRANoch ROLLBACK TRANSACTION.

ANGE AUTOCOMMIT { PÅ | AV }

Avgör hur transaktioner kan starta och avsluta.

Om du ändrar AUTOCOMMIT inställningen i en aktiv transaktion påverkar inställningen den aktuella transaktionen och börjar inte gälla förrän transaktionen har slutförts.

Om AUTOCOMMIT är ONhar körning av en annan SET AUTOCOMMIT ON instruktion ingen effekt. På samma sätt, om AUTOCOMMIT är OFF, har körning av en annan SET AUTOCOMMIT OFF ingen effekt.

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 ON.

BORT

Azure Synapse Analytics 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 OFFläget , en ny transaktion initieras. Explicita transaktioner tillåts inte när AUTOCOMMIT är OFF.

ANGE IMPLICIT_TRANSACTIONS { ON | AV }

Detta växlar samma lägen som SET AUTOCOMMIT. När ONanger SET IMPLICIT_TRANSACTIONS anslutningen i implicit transaktionsläge. När OFFreturnerar den 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 till exempel klientens nätverksanslutning ä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 konsekvent med SQL Server XACT_ABORT inställt på ON och hela transaktionen återställs. Mer information om inställningen finns i XACT_ABORTSET XACT_ABORT (Transact-SQL).

Anmärkningar

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 anger AUTOCOMMIT till OFF, eller anger IMPLICIT_TRANSACTIONS till ON, har den ingen effekt på transaktionslägena för någon annan session.

Begränsningar

Du kan inte återställa en transaktion efter att en COMMIT instruktion har utfärdats eftersom dataändringarna har gjorts som en permanent del av databasen.

Kommandona CREATE DATABASE och DROP DATABASE (Transact-SQL) kan inte användas i en explicit transaktion.

Azure Synapse Analytics 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.

Examples

A. Använda en explicit transaktion

BEGIN TRANSACTION;  
       DELETE FROM HumanResources.JobCandidate  
       WHERE JobCandidateID = 13;
COMMIT;  

B. Återställa en öppen transaktion

I följande exempel visas effekten av att återställa en transaktion. I det här exemplet återställer -instruktionen ROLLBACK -instruktionen INSERT , 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;