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şlemin kaynaklarını serbestleştirir ve 0'a geriler @@TRANCOUNT . 1'den büyük olduğunda @@TRANCOUNT , COMMIT TRANSACTION yalnızca 1'e kadar azalma olur @@TRANCOUNT ve işlem etkin kalır.
Transact-SQL söz dizimi kuralları
Syntax
Syntax for SQL Server, Azure SQL Database, SQL database in Microsoft Fabric.
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, Azure SQL Database, SQL database in Microsoft Fabric.
SQL Server Veritabanı Altyapısı tarafından yoksayılır.
transaction_name , önceki BEGIN TRANSACTIONbir tarafından atanan işlem adını belirtir.
transaction_nametanımlayıcıların kurallarına uyması gerekir, ancak 32 karakteri aşamaz.
transaction_name , ile ilişkili iç içe BEGIN TRANSACTION yerleştirilmiş programcılara COMMIT TRANSACTION gösterir.
@tran_name_variable
Şunlar için geçerlidir: SQL Server, Azure SQL Database, SQL database in Microsoft Fabric.
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 32 karakter kullanılır. Kalan karakterler kesilir.
WITH DELAYED_DURABILITY = { KAPALI | ON }
Şunlar için geçerlidir: SQL Server, Azure SQL Database, SQL database in Microsoft Fabric.
Bu işlemi isteyen seçeneğin gecikmeli dayanıklılıkla işlenmesi gerekir. Veritabanı veya DELAYED_DURABILITY = DISABLEDile DELAYED_DURABILITY = FORCED değiştirildiyse istek yoksayılır. Daha fazla bilgi için bkz. İşlem Dayanıklılığını Denetleme.
Remarks
yalnızca işlem tarafından başvuruda bulunan tüm verilerin mantıksal olarak doğru olduğu bir noktada yayınlamak COMMIT TRANSACTION Transact-SQL programcını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 sunucuları 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şlemde yer alan tüm veritabanlarını işlemek için iç iki aşamalı bir işleme kullanır.
İç içe işlemlerde kullanıldığında, iç işlemlerin işlemeleri kaynakları boşaltmaz veya 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 biri birden büyük olduğunda verilen her COMMIT TRANSACTION biri 1'e kadar geriler@@TRANCOUNT.@@TRANCOUNT Sonunda 0'a indiğinde @@TRANCOUNT , dış işlemin tamamı işlenir.
transaction_name Veritabanı Altyapısı tarafından yoksayıldığından, bekleyen iç işlemler yalnızca 1'e kadar azaldığında dış işlemin adına başvuran bir COMMIT TRANSACTION başvuruda bulunur@@TRANCOUNT.
Sıfır olduğunda COMMIT TRANSACTION değerinin verilmesi @@TRANCOUNT hatayla sonuçlanır; buna karşılık gelen BEGIN TRANSACTIONyoktur.
Veri değişiklikleri veritabanının kalıcı bir parçası yapıldığından, bir COMMIT TRANSACTION deyim verildikten sonra işlemi geri alamayabilirsiniz.
Veritabanı Altyapısı, yalnızca deyimin başında işlem sayısı 0 olduğunda bir deyim içindeki işlem sayısını artırır.
Permissions
"" genel "" rolüne ü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 Synapse Analytics ve 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. İç içe işlem işleme
Şunlar için geçerlidir: SQL Server, Azure SQL Database, SQL database in Microsoft Fabric.
Aşağıdaki örnek bir tablo oluşturur, iç içe üç işlem düzeyi oluşturur ve ardından iç içe işlemi işler. Her COMMIT TRANSACTION deyimin bir transaction_name parametresi olsa da ve COMMIT TRANSACTION deyimleri arasında BEGIN TRANSACTION ilişki yoktur.
transaction_name parametreleri, programcının dış işlemi işlemek için doğru işleme sayısının 0'a inecek @@TRANCOUNT şekilde 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));