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.
Vonatkozik a következőkre:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analitikai Platform System (PDW)
SQL adatbázis a Microsoft Fabric-ben
Egy skaláris függvény, amely a jelenleg futó kérés felhasználói tranzakciós állapotát jelenti. XACT_STATE jelzi, hogy a kérésnek van-e aktív felhasználói tranzakciója, és hogy a tranzakció elkötelezhető-e.
Transact-SQL szintaxis konvenciók
Szemantika
XACT_STATE()
Megjegyzés:
Ezt a szintaxist az Azure Synapse Analytics kiszolgáló nélküli SQL-készlete nem támogatja.
Visszatérési típus
smallint
Megjegyzések
XACT_STATE a következő értékeket adja vissza.
| Visszaadott érték | Meaning |
|---|---|
| 1 | A jelenlegi kérésnek aktív felhasználói tranzakciója van. A kérés bármilyen műveletet végrehajthat, beleértve az adatírást és a tranzakció elkötését is. |
| 0 | Nincs aktív felhasználói tranzakció a jelenlegi kéréshez. |
| -1 | A jelenlegi kérésnek aktív felhasználói tranzakciója van, de egy hiba történt, amely miatt a tranzakciót nem kötelezhető tranzakcióként sorolták be. A kérés nem tudja felvállalni a tranzakciót vagy vissza vissza mentési pontra; Csak a tranzakció teljes visszavonását kérheti. A kérés nem végezhet írási műveleteket, amíg vissza nem indítja a tranzakciót. A kérés csak olvasási műveleteket végezhet, amíg vissza nem fordítja a tranzakciót. Miután a tranzakciót visszafordították, a kérés mind olvasási, mind írási műveleteket végezhet, és új tranzakciót indíthat. Amikor a legkülső batch befejezi a futtatást, az Adatbázis Engine automatikusan visszafordítja az aktív, elkötelezett tranzakciókat. Ha a tranzakció elkötelezettségtelen állapotba került és nem küldött hibaüzenetet, akkor a batch befejezésekor hibaüzenetet küldenek az ügyfélalkalmazásnak. Ez az üzenet azt jelzi, hogy egy elkötelezetlen tranzakciót észleltek és visszaállítottak. |
Mind a XACT_STATE, mind a @@TRANCOUNT funkció használható annak felismerésére, hogy a jelenlegi kérésnek van-e aktív felhasználói tranzakciója. @@TRANCOUNT nem használható annak megállapítására, hogy az adott tranzakció elkötelezetlen tranzakcióként lett-e besorolva. XACT_STATE nem használható arra, hogy megállapítsák, vannak-e beágyazott tranzakciók.
Példák
A következő példa XACT_STATE egy CATCH konstrukció blokkjában TRY...CATCH határozza meg, hogy elkötelezzük-e vagy visszafordítsunk egy tranzakciót. Mivel SET XACT_ABORT az ON, a korlátozás megsértési hiba miatt a tranzakció elkötelezetlen állapotba kerül.
USE AdventureWorks2022;
GO
-- SET XACT_ABORT ON will render the transaction uncommittable
-- when the constraint violation occurs.
SET XACT_ABORT ON;
BEGIN TRY
BEGIN TRANSACTION;
-- A FOREIGN KEY constraint exists on this table. This
-- statement will generate a constraint violation error.
DELETE FROM Production.Product
WHERE ProductID = 980;
-- If the delete operation succeeds, commit the transaction. The CATCH
-- block will not execute.
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
-- Test XACT_STATE for 0, 1, or -1.
-- If 1, the transaction is committable.
-- If -1, the transaction is uncommittable and should
-- be rolled back.
-- XACT_STATE = 0 means there is no transaction and
-- a commit or rollback operation would generate an error.
-- Test whether the transaction is uncommittable.
IF (XACT_STATE()) = -1
BEGIN
PRINT 'The transaction is in an uncommittable state.' +
' Rolling back transaction.'
ROLLBACK TRANSACTION;
END;
-- Test whether the transaction is active and valid.
IF (XACT_STATE()) = 1
BEGIN
PRINT 'The transaction is committable.' +
' Committing transaction.'
COMMIT TRANSACTION;
END;
END CATCH;
GO
Lásd még:
@@TRANCOUNT (Transact-SQL)
TRANZAKCIÓ INDÍTÁSA (Transact-SQL)
VÉGLEGESÍTÉSI TRANZAKCIÓ (Transact-SQL)
VISSZAÁLLÍTÁSI TRANZAKCIÓ (Transact-SQL)
MENTÉS TRANZAKCIÓ (Transact-SQL)
TRY... CATCH (Transact-SQL)