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 Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analitik Platform Sistemi (PDW)
Microsoft Fabric'te SQL veritabanı
Uyarı
THROW ifadesi onur.SET XACT_ABORT RAISERROR ise bunu yapmaz. Yeni uygulamalar RAISERROR yerine THROW kullanmalı.
Bir Transact-SQL ifadesi çalıştırma hatası yarattığında SQL Server'ın mevcut işlemi otomatik olarak geri alıp almayacağını belirtir.
Transact-SQL söz dizimi kuralları
Sözdizimi
SET XACT_ABORT { ON | OFF }
Açıklamalar
ON'da, SET XACT_ABORT Transact-SQL ifadesi bir çalışma zamanı hatası yaratırsa, tüm işlem sonlandırılır ve geri alınır.
KAPALı olduğunda SET XACT_ABORT , bazı durumlarda sadece hatayı ortaya çıkaran Transact-SQL ifadesi geri alınır ve işlem işlemeye devam eder. Hatanın ciddiyetine bağlı olarak, KAPALI olsa SET XACT_ABORT bile tüm işlem geri alınabilir. KAPA, bir T-SQL ifadesinde varsayılan ayardır, tetikleyicide varsayılan ayar ise ON'dur.
Söz dizimi hataları gibi derleme hataları SET XACT_ABORTetkilenmez.
XACT_ABORTçoğu OLE DB sağlayıcısına karşı örtük veya açık bir işlem için, SQL Server dahil, veri değiştirme ifadeleri için ON'da ayarlanmalıdır. Bu seçeneğin zorunlu olmadığı tek durum, sağlayıcının iç içe işlemleri desteklemesidir.
=OFF olduğunda ANSI_WARNINGS, izin ihlalleri işlemlerin iptalına neden olur.
Ayarları SET XACT_ABORT işleme veya çalıştırma zamanında ayarlanır, ayrıştırma zamanında değil.
Bu ayarın mevcut ayarını görmek için aşağıdaki sorguyu çalıştırın.
DECLARE @XACT_ABORT VARCHAR(3) = 'OFF';
IF ( (16384 & @@OPTIONS) = 16384 ) SET @XACT_ABORT = 'ON';
SELECT @XACT_ABORT AS XACT_ABORT;
Örnekler
Aşağıdaki kod örneği, başka Transact-SQL ifadeleri olan bir işlemde yabancı anahtar ihlali hatasına yol açar. İlk ifade setinde hata oluşturulur, ancak diğer imalar başarıyla yürütüler ve işlem başarıyla gerçekleştirilir. İkinci cümle setinde, SET XACT_ABORT 'ye ONayarlanır. Bu, ifade hatasının toplu işlemi sonlandırmasına ve işlemin geri alınmasına neden olur.
IF OBJECT_ID(N't2', N'U') IS NOT NULL
DROP TABLE t2;
GO
IF OBJECT_ID(N't1', N'U') IS NOT NULL
DROP TABLE t1;
GO
CREATE TABLE t1
(a INT NOT NULL PRIMARY KEY);
CREATE TABLE t2
(a INT NOT NULL REFERENCES t1(a));
GO
INSERT INTO t1 VALUES (1);
INSERT INTO t1 VALUES (3);
INSERT INTO t1 VALUES (4);
INSERT INTO t1 VALUES (6);
GO
SET XACT_ABORT OFF;
GO
BEGIN TRANSACTION;
INSERT INTO t2 VALUES (1);
INSERT INTO t2 VALUES (2); -- Foreign key error.
INSERT INTO t2 VALUES (3);
COMMIT TRANSACTION;
GO
SET XACT_ABORT ON;
GO
BEGIN TRANSACTION;
INSERT INTO t2 VALUES (4);
INSERT INTO t2 VALUES (5); -- Foreign key error.
INSERT INTO t2 VALUES (6);
COMMIT TRANSACTION;
GO
-- SELECT shows only keys 1 and 3 added.
-- Key 2 insert failed and was rolled back, but
-- XACT_ABORT was OFF and rest of transaction
-- succeeded.
-- Key 5 insert error with XACT_ABORT ON caused
-- all of the second transaction to roll back.
SELECT *
FROM t2;
GO