Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analitik Platform Sistemi (PDW)
Microsoft Fabric'te SQL veritabanı
Geçerli oturumun kullanıcı işlem durumunu bildiren bir skaler işlevdir.
XACT_STATE oturumun etkin bir kullanıcı işlemine sahip olup olmadığını ve işlemin işlenip işlenemeyeceğini gösterir.
Transact-SQL söz dizimi kuralları
Sözdizimi
XACT_STATE()
Uyarı
Bu söz dizimi, Azure Synapse Analytics'teki sunucusuz SQL havuzu tarafından desteklenmez.
Dönüş türleri
smallint
Açıklamalar
XACT_STATE aşağıdaki değerleri döndürür.
| Dönüş değeri | Description |
|---|---|
| 1 | Geçerli oturumda etkin bir kullanıcı işlemi var. Oturum, veri yazma ve işlemi işleme dahil olmak üzere tüm eylemleri gerçekleştirebilir. |
| 0 | Geçerli oturum için etkin kullanıcı işlemi yok. |
| -1 | Geçerli oturumda etkin bir kullanıcı işlemi var, ancak işlemin yaygın olmayan bir işlem olarak sınıflandırılmasına neden olan bir hata oluştu. Oturum işlemi işleyemiyor veya bir kayıt noktasına geri alamıyor; yalnızca işlemin tam geri alınması istenebilir. Oturum, işlemi geri alana kadar herhangi bir yazma işlemi gerçekleştiremez. Oturum yalnızca işlemi geri alana kadar okuma işlemleri gerçekleştirebilir. İşlem geri alındıktan sonra oturum hem okuma hem de yazma işlemlerini gerçekleştirebilir ve yeni bir işlem başlatabilir. En dıştaki toplu işlemin çalışması tamamlandığında, Veritabanı Altyapısı tüm etkin ve yaygın olmayan işlemleri otomatik olarak geri alır. İşlem yaygın olmayan bir duruma girdiğinde hata iletisi gönderilmediyse, toplu işlem tamamlandığında istemci uygulamasına bir hata iletisi gönderilir. Bu mesaj, bağlanamayan bir işlemin tespit edilip geri alındığını gösterir. |
XACT_STATE Hem hem de @@TRANCOUNT işlevleri geçerli oturumun etkin bir kullanıcı işlemi olup olmadığını algılamak için kullanılabilir.
@@TRANCOUNT bu işlemin yaygın olmayan bir işlem olarak sınıflandırılıp sınıflandırılmadığını belirlemek için kullanılamaz.
XACT_STATE iç işlemler olup olmadığını belirlemek için kullanılamaz.
Örnekler
Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.
Aşağıdaki örnek, bir XACT_STATE işlemi bağlayıp geri almayacağını belirlemek için bir yapının bloğunda kullanılır.CATCHTRY...CATCH Çünkü SET XACT_ABORT , ONkısıtlama ihlali hatası, işlemin taahhüt edilemeyen bir duruma girmesine neden olur.
-- 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;