Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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 az aktuális munkamenet felhasználói tranzakciós állapotát jelenti.
XACT_STATE azt jelzi, hogy a munkamenet aktív felhasználói tranzakcióval rendelkezik-e, és hogy a tranzakció lekötött-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ípusok
smallint
Megjegyzések
XACT_STATE A következő értékeket adja vissza.
| Visszaadott érték | Description |
|---|---|
| 1 | Az aktuális munkamenet aktív felhasználói tranzakcióval rendelkezik. A munkamenet bármilyen műveletet végrehajthat, beleértve az adatok írását és a tranzakció véglegesítését. |
| 0 | Az aktuális munkamenethez nincs aktív felhasználói tranzakció. |
| -1 | Az aktuális munkamenet aktív felhasználói tranzakcióval rendelkezik, de hiba történt, amely miatt a tranzakció nem véglegesített tranzakcióként lett besorolva. A munkamenet nem tudja véglegesíteni a tranzakciót, és nem lehet visszagörgetni a mentési pontokra; csak a tranzakció teljes visszaállítását kérheti. A munkamenet nem hajthat végre írási műveleteket, amíg vissza nem veti a tranzakciót. A munkamenet csak olvasási műveleteket hajthat végre, amíg vissza nem veti a tranzakciót. A tranzakció visszaállítása után a munkamenet olvasási és írási műveleteket is végrehajthat, és új tranzakciót indíthat el. Amikor a legkülső köteg fut, az adatbázismotor automatikusan visszaállítja az aktív, nem véglegesíthető tranzakciókat. Ha a tranzakció nem véglegesített állapotba helyezésekor nem érkezett hibaüzenet, a köteg befejeződésekor a rendszer hibaüzenetet küld az ügyfélalkalmazásnak. Ez az üzenet azt jelzi, hogy egy elkötelezetlen tranzakciót észleltek és visszaállítottak. |
Mind a XACT_STATE@@TRANCOUNT függvények használhatók annak észlelésére, hogy az aktuális munkamenet aktív felhasználói tranzakcióval rendelkezik-e.
@@TRANCOUNT nem használható annak meghatározására, hogy a tranzakció nem végleges tranzakcióként van-e besorolva.
XACT_STATE nem használható annak meghatározására, hogy vannak-e belső tranzakciók.
Példák
A cikkben szereplő kódminták a AdventureWorks2025 vagy AdventureWorksDW2025 mintaadatbázist használják, amelyet a Microsoft SQL Server-minták és közösségi projektek kezdőlapjáról tölthet le.
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.
-- SET XACT_ABORT ON renders 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 generates a constraint violation error.
DELETE FROM Production.Product
WHERE ProductID = 980;
-- If the delete operation succeeds, commit the transaction. The CATCH
-- block does not execute.
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
-- 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;