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
Analiz Platformu Sistemi (PDW)
Microsoft Fabric'te
ambarMicrosoft Fabric'te SQL veritabanı
Başarılı bir örtük veya açık işlemin sonunu işaretler.
1 ise @@TRANCOUNT , COMMIT TRANSACTION işlemin başlamasından bu yana yapılan tüm veri değişikliklerini veritabanının kalıcı bir parçası yapar, işlem kaynaklarını serbestleştirir ve 0'a geriler @@TRANCOUNT .
1'den büyük olduğunda @@TRANCOUNT , COMMIT TRANSACTION 1'e kadar azalma olur @@TRANCOUNT ve işlem etkin kalır.
Transact-SQL söz dizimi kuralları
Syntax
SQL Server, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği, Microsoft Fabric'te SQL veritabanı için söz dizimi.
COMMIT [ { TRAN | TRANSACTION }
[ transaction_name | @tran_name_variable ] ]
[ WITH ( DELAYED_DURABILITY = { OFF | ON } ) ]
[ ; ]
Doku Veri Ambarı, Azure Synapse Analytics ve Paralel Veri Ambarı Veritabanı için söz dizimi.
COMMIT [ TRAN | TRANSACTION ]
[ ; ]
Arguments
transaction_name
Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve sonraki sürümleri, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği, Microsoft Fabric'teki SQL veritabanı.
ile COMMITbelirtildiğinde Veritabanı Altyapısı tarafından yoksayılır.
transaction_name , önceki BEGIN TRANSACTIONbir tarafından atanan işlem adını belirtir.
transaction_name tanımlayıcıların kurallarına uyması gerekir, ancak 32 karakteri aşamaz.
transaction_name , deyiminin hangi iç BEGIN TRANSACTION deyimlerle COMMIT TRANSACTION ilişkili olduğunu belirtmek için kod belge tekniği olarak kullanılabilir.
@tran_name_variable
Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve sonraki sürümleri, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği, Microsoft Fabric'teki SQL veritabanı.
Geçerli bir işlem adı içeren kullanıcı tanımlı değişkenin adı. Değişkenin char, varchar, nchar veya nvarchar veri türüyle bildirilmesi gerekir. Değişkene 32'den fazla karakter geçirilirse yalnızca ilk 32 karakter kullanılır. Kalan karakterler kesilir.
WITH DELAYED_DURABILITY = { KAPALI | ON }
Şunlar için geçerlidir: SQL Server 2008 (10.0.x) ve sonraki sürümleri, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği, Microsoft Fabric'teki SQL veritabanı.
Bu işlemin gecikmeli dayanıklılıkla işlenmesini isteyen seçenek. Veritabanı için gecikmeli dayanıklılık devre dışı bırakılırsa istek yoksayılır. Veritabanı için gecikmeli dayanıklılık zorlanırsa, bu seçenek ne olursa olsun gecikmeli dayanıklılıkla işlem yapılır.
Daha fazla bilgi için bkz. İşlem Dayanıklılığını Denetleme.
Remarks
İşlem tarafından başvuruda bulunan tüm verilerin istenen tutarlılık durumuna ulaştığı bir noktada vermek COMMIT TRANSACTION uygulamanın sorumluluğundadır.
İşlenen işlem Transact-SQL dağıtılmış bir işlemse, COMMIT TRANSACTION MS DTC'yi işlemle ilgili tüm sunucularda işlemi işlemek için iki aşamalı bir işleme protokolü kullanacak şekilde tetikler. Yerel bir işlem Veritabanı Altyapısı'nın aynı örneğindeki iki veya daha fazla veritabanına yayıldığında, örnek işlemi işlemeye dahil olan tüm veritabanlarında işlemi işlemek için iç iki aşamalı bir işleme kullanır.
İç işlemler için kullanıldığında, işleme kaynakları boşaltmaz veya veri değişikliklerini kalıcı hale getirmez. Veri değişiklikleri kalıcı yapılır ve kaynaklar yalnızca dış işlem işlendiğinde serbesttir. Her COMMIT TRANSACTION biri 1 azalmadan 1'den @@TRANCOUNT büyük olduğunda @@TRANCOUNT verilir, ancak başka bir etkisi yoktur. Sonunda 0'a indiğinde @@TRANCOUNT , dış işlemin tamamı işlenir. ile COMMIT TRANSACTION belirtilen transaction_name Veritabanı Altyapısı tarafından yoksayıldığından, yalnızca @@TRANCOUNT 1'e kadar azalan bekleyen iç işlemler olduğunda dış işlemin adına başvuran bir COMMIT TRANSACTION verme.
Sıfır olduğunda @@TRANCOUNT değerinin verilmesiCOMMIT TRANSACTION, karşılık gelen BEGIN TRANSACTIONolmadığından hatayla sonuçlanır.
Veri değişiklikleri zaten veritabanının kalıcı bir parçası olduğundan, bir COMMIT TRANSACTION deyim verildikten sonra işlemi geri alamazsınız.
Uyarı
Veritabanı Altyapısı bağımsız olarak yönetilebilir iç içe işlemleri desteklemez. İç işlem işlemesi azalsa @@TRANCOUNT da başka etkisi yoktur. İç işlemin geri alınması, bir kayıt noktası olmadığı ve deyiminde ROLLBACK belirtilmediği sürece her zaman dış işlemi geri alır.
Permissions
Rolde public üyelik gerektirir.
Examples
Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.
A. İşlem işleme
Şunlar için geçerlidir: SQL Server, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği, Microsoft Fabric'te SQL veritabanı, Azure Synapse Analytics, Analytics Platform Sistemi (PDW)
Aşağıdaki örnek bir iş adayını siler.
BEGIN TRANSACTION;
DELETE FROM HumanResources.JobCandidate
WHERE JobCandidateID = 13;
COMMIT TRANSACTION;
B. Dış işlemi ve iç işlemleri işleme
Şunlar için geçerlidir: SQL Server, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği, Microsoft Fabric'teki SQL veritabanı.
Aşağıdaki örnek bir tablo oluşturur, bir dış ve iki iç işlem başlatır ve ardından her işlemi işler. Bu örnekte kullanılan transaction_name parametreleri, geliştiricinin doğru işleme sayısının 0'a azalmak @@TRANCOUNT ve dış işlemi işlemek için kodlanmasını sağlamasına yardımcı olur.
IF OBJECT_ID(N'TestTran', N'U') IS NOT NULL
DROP TABLE TestTran;
GO
CREATE TABLE TestTran (
Cola INT PRIMARY KEY,
Colb CHAR(3)
);
GO
-- This statement sets @@TRANCOUNT to 1.
BEGIN TRANSACTION OuterTran;
PRINT N'Transaction count after BEGIN OuterTran = ' + CAST(@@TRANCOUNT AS NVARCHAR(10));
INSERT INTO TestTran
VALUES (1, 'aaa');
-- This statement sets @@TRANCOUNT to 2.
BEGIN TRANSACTION Inner1;
PRINT N'Transaction count after BEGIN Inner1 = ' + CAST(@@TRANCOUNT AS NVARCHAR(10));
INSERT INTO TestTran
VALUES (2, 'bbb');
-- This statement sets @@TRANCOUNT to 3.
BEGIN TRANSACTION Inner2;
PRINT N'Transaction count after BEGIN Inner2 = ' + CAST(@@TRANCOUNT AS NVARCHAR(10));
INSERT INTO TestTran
VALUES (3, 'ccc');
-- This statement decrements @@TRANCOUNT to 2.
-- Nothing is committed.
COMMIT TRANSACTION Inner2;
PRINT N'Transaction count after COMMIT Inner2 = ' + CAST(@@TRANCOUNT AS NVARCHAR(10));
-- This statement decrements @@TRANCOUNT to 1.
-- Nothing is committed.
COMMIT TRANSACTION Inner1;
PRINT N'Transaction count after COMMIT Inner1 = ' + CAST(@@TRANCOUNT AS NVARCHAR(10));
-- This statement decrements @@TRANCOUNT to 0 and
-- commits outer transaction OuterTran.
COMMIT TRANSACTION OuterTran;
PRINT N'Transaction count after COMMIT OuterTran = ' + CAST(@@TRANCOUNT AS NVARCHAR(10));