Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:Azure Synapse Analytics
Analytics Platform System (PDW)
A tranzakció egy vagy több adatbázis-utasításból álló csoport, amely teljesen véglegesített vagy teljesen vissza lett állítva. Minden tranzakció atomi, konzisztens, izolált és tartós (ACID). Ha a tranzakció sikeres, a benne lévő összes utasítás véglegesítése történik. Ha a tranzakció meghiúsul, akkor a csoport legalább egyik utasítása meghiúsul, akkor a teljes csoport vissza lesz állítva.
Jegyzet
A SET AUTOCOMMIT parancs nem támogatott a Microsoft Fabric Data Warehouse-ban. A Microsoft Fabric Data Warehouse tranzakcióiról, elkülönítéséről, egyidejűségéről és konzisztenciájáról a Fabric Data Warehouse tranzakciói című témakörben olvashat bővebben.
A tranzakciók kezdete és vége a beállítástól és az AUTOCOMMIT , COMMITés ROLLBACK az BEGIN TRANSACTIONutasításoktól függ.
A következő típusú tranzakciók támogatottak:
Az explicit tranzakciók az
BEGIN TRANSACTIONutasítással kezdődnek, és az vagyROLLBACKutasítássalCOMMITvégződnek.Az automatikus véglegesítési tranzakciók automatikusan elindulnak egy munkameneten belül, és nem az
BEGIN TRANSACTIONutasítással kezdődnek.- Ha a
AUTOCOMMITbeállítás meg vanONadva, minden utasítás egy tranzakcióban fut, és nincs explicitCOMMITvagyROLLBACKszükséges. - Ha a
AUTOCOMMITbeállítás azOFF, egyCOMMITvagyROLLBACKtöbb utasításra van szükség a tranzakció eredményének meghatározásához. Az automatikus kiküldéses tranzakciók közvetlenül egy vagyROLLBACKegyCOMMITutasítás után, vagy egy utasítás után kezdődnekSET AUTOCOMMIT OFF.
- Ha a
Transact-SQL szintaxis konvenciói
Szintaxis
BEGIN TRANSACTION [;]
COMMIT [ TRAN | TRANSACTION | WORK ] [;]
ROLLBACK [ TRAN | TRANSACTION | WORK ] [;]
SET AUTOCOMMIT { ON | OFF } [;]
SET IMPLICIT_TRANSACTIONS { ON | OFF } [;]
Érvek
TRANZAKCIÓ INDÍTÁSA
Egy explicit tranzakció kezdőpontját jelöli meg.
VÉGLEGESÍTÉS [ MUNKA ]
Egy explicit vagy autocommit tranzakció végét jelöli meg. Ez az utasítás azt eredményezi, hogy a tranzakció módosításai véglegesen le lesznek kötelezve az adatbázisra. Az utasítás COMMIT megegyezik az , COMMIT TRANés COMMIT TRANSACTIONa COMMIT WORK.
VISSZAÁLLÍTÁS [ MUNKA ]
Visszaállít egy tranzakciót a tranzakció elejére. A tranzakció nem módosul az adatbázisban. Az utasítás ROLLBACK megegyezik az , ROLLBACK TRANés ROLLBACK TRANSACTIONa ROLLBACK WORK.
AUTOCOMMIT BEÁLLÍTÁSA { BE | KI }
Meghatározza, hogyan kezdődhetnek és végződhetnek a tranzakciók.
Ha egy aktív tranzakción belül módosítja a AUTOCOMMIT beállítást, a beállítás hatással van az aktuális tranzakcióra, és a tranzakció befejezéséig nem lép érvénybe.
Ha AUTOCOMMIT igen ON, egy másik SET AUTOCOMMIT ON utasítás futtatása nincs hatással. Hasonlóképpen, ha AUTOCOMMIT igen, a OFFmásik SET AUTOCOMMIT OFF futtatása nincs hatással.
RA
Minden utasítás a saját tranzakciója alatt fut, és nincs szükség explicit COMMIT vagy ROLLBACK utasításra. Explicit tranzakciók akkor engedélyezettek, ha AUTOCOMMIT az .ON
KI
Az Azure Synapse Analytics automatikusan kezdeményez egy tranzakciót, ha egy tranzakció még nincs folyamatban. Az ezt követő utasítások a tranzakció részeként futnak, és COMMIT a tranzakció kimenetelének meghatározásához szükségesek vagy ROLLBACK szükségesek. Amint egy tranzakció véglegesíti vagy visszaállítja ezt a működési módot, a mód megmarad OFF, egy új tranzakció indul el. Explicit tranzakciók nem engedélyezettek, ha AUTOCOMMIT az .OFF
SET IMPLICIT_TRANSACTIONS { ON | KI }
Ez ugyanazokkal a módokkal vált, mint a SET AUTOCOMMIT. Amikor ONa SET IMPLICIT_TRANSACTIONS kapcsolat implicit tranzakciós módba van osztva. Amikor OFFaz automatikus kiküldési módhoz való kapcsolatot adja vissza. További információ: SET IMPLICIT_TRANSACTIONS (Transact-SQL).
Engedélyek
A tranzakcióval kapcsolatos utasítások futtatásához nincs szükség konkrét engedélyekre. A tranzakción belüli utasítások futtatásához engedélyekre van szükség.
Hibakezelés
Ha COMMIT fut vagy ROLLBACK fut, és nincs aktív tranzakció, hibaüzenet jelenik meg.
Ha a rendszer futtat egy BEGIN TRANSACTION tranzakciót, miközben egy tranzakció már folyamatban van, hibaüzenet jelenik meg. Ez akkor fordulhat elő, ha egy BEGIN TRANSACTION sikeres BEGIN TRANSACTION utasítás után vagy a munkamenet alatt SET AUTOCOMMIT OFFvan.
Ha a futásidejű utasítástól eltérő hiba megakadályozza egy explicit tranzakció sikeres befejezését, az adatbázismotor automatikusan visszaállítja a tranzakciót, és felszabadítja a tranzakció által birtokolt összes erőforrást. Ha például az ügyfél hálózati kapcsolata megszakadt, vagy az ügyfél kijelentkezik az alkalmazásból, a rendszer visszaállítja a kapcsolat nem véglegesített tranzakcióit, amikor a hálózat értesíti a törés példányát.
Ha futásidejű utasításhiba lép fel egy kötegben, az Azure Synapse Analytics konzisztensen viselkedik az SQL Server XACT_ABORT beállításával ON , és a teljes tranzakció vissza lesz állítva. A beállításról további információt a XACT_ABORTSET XACT_ABORT (Transact-SQL) című témakörben talál.
Megjegyzések
A munkamenetek csak egy tranzakciót futtathatnak egy adott időpontban; mentési pontok és beágyazott tranzakciók nem támogatottak.
A programozó felelőssége, hogy csak olyan időpontban adjon ki COMMIT adatokat, amikor a tranzakció által hivatkozott összes adat logikailag helyes.
Ha egy munkamenet a tranzakció befejeződése előtt le van állítva, a tranzakció vissza lesz állítva.
A tranzakciós módokat a munkamenet szintjén kezeli a rendszer. Ha például az egyik munkamenet explicit tranzakciót indít el, vagy a következőre OFFállítja AUTOCOMMIT vagy állítja be IMPLICIT_TRANSACTIONSON, annak nincs hatása a többi munkamenet tranzakciós módjára.
Korlátozások
A tranzakció nem állítható vissza egy COMMIT utasítás kiadása után, mert az adatmódosítások az adatbázis állandó részét képezték.
A CREATE DATABASE és a DROP DATABASE (Transact-SQL) parancs nem használható explicit tranzakción belül.
Az Azure Synapse Analytics nem rendelkezik tranzakciómegosztási mechanizmussal. Ez azt jelenti, hogy egy adott időpontban csak egy munkamenet dolgozhat a rendszer bármely tranzakcióján.
Zárolási viselkedés
A zárolás biztosítja a tranzakciók integritását, és fenntartja az adatbázisok konzisztenciáját, ha egyszerre több felhasználó is hozzáfér az adatokhoz. A zárolást implicit és explicit tranzakciók is használják. Minden tranzakció különböző típusú zárolásokat kér az erőforrásokon, például táblákat vagy adatbázisokat, amelyektől a tranzakció függ.
Minden zárolás táblaszintű vagy magasabb. A zárolások megakadályozzák, hogy más tranzakciók úgy módosítsák az erőforrásokat, hogy az problémákat okozzon a zárolást kérő tranzakció esetében. Minden tranzakció felszabadítja a zárolásokat, ha már nincs függősége a zárolt erőforrásoktól; az explicit tranzakciók mindaddig megőrzik a zárolásokat, amíg a tranzakció lekötött vagy vissza nem kerül.
Példák
Egy. Explicit tranzakció használata
BEGIN TRANSACTION;
DELETE FROM HumanResources.JobCandidate
WHERE JobCandidateID = 13;
COMMIT;
B. Nyitott tranzakció visszaállítása
Az alábbi példa egy tranzakció visszagördülésének hatását mutatja be. Ebben a példában az ROLLBACK utasítás visszaállítja az INSERT utasítást, de a létrehozott tábla továbbra is létezik.
CREATE TABLE ValueTable (id INT);
BEGIN TRANSACTION;
INSERT INTO ValueTable VALUES(1);
INSERT INTO ValueTable VALUES(2);
ROLLBACK;
C. AUTOCOMMIT beállítása
Az alábbi példa a beállítást a AUTOCOMMIT következőre ONállítja: .
SET AUTOCOMMIT ON;
Az alábbi példa a beállítást a AUTOCOMMIT következőre OFFállítja: .
SET AUTOCOMMIT OFF;
D. Implicit többutas tranzakció használata
SET AUTOCOMMIT OFF;
CREATE TABLE ValueTable (id INT);
INSERT INTO ValueTable VALUES(1);
INSERT INTO ValueTable VALUES(2);
COMMIT;