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ı
Açık, yerel bir işlemin başlangıç noktasını işaretler. Açık işlemler deyimiyle BEGIN TRANSACTION başlar ve veya COMMIT deyimiyle ROLLBACK biter.
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.
BEGIN { TRAN | TRANSACTION }
[ { transaction_name | @tran_name_variable }
[ WITH MARK [ 'description' ] ]
]
[ ; ]
Doku Veri Ambarı, Azure Synapse Analytics ve Analiz Platformu Sistemi (PDW) için söz dizimi.
BEGIN { 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ı.
İşlem için atanan ad.
transaction_name tanımlayıcıların kurallarına uyması gerekir, ancak 32 karakterden uzun tanımlayıcılara izin verilmez. İşlem adlarını yalnızca en dıştaki veya BEGIN...ROLLBACK deyim çiftinde BEGIN...COMMIT kullanın.
veritabanı altyapısı örneği büyük/küçük harfe duyarlı olmasa bile transaction_name her zaman büyük/küçük harfe duyarlıdır.
@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.
MARK İLE [ 'tanım' ]
Ş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ı.
İşlemin işlem günlüğünde işaretlendiğini belirtir.
description , işareti tanımlayan bir dizedir. Tabloda depolanmadan önce 128 karakterden uzun bir msdb.dbo.logmarkhistory 128 karaktere kesilir.
Kullanılırsa WITH MARK , bir işlem adı belirtilmelidir.
WITH MARK , bir işlem günlüğünü işaretle tanımlanan bir noktaya geri yüklemeye olanak tanır.
Remarks
BEGIN TRANSACTION tarafından artırılır @@TRANCOUNT1.
BEGIN TRANSACTION bir oturum tarafından başvurulan verilerin belirli bir tutarlılık durumuna sahip olduğu bir noktayı temsil eder. sonrasında yapılan BEGIN TRANSACTION tüm veri değişiklikleri, verileri bu bilinen tutarlılık durumuna döndürmek için geri alınabilir. Her işlem, değişikliklerin veritabanının kalıcı bir parçası olması için verilene kadar COMMIT TRANSACTION sürer veya tüm değişiklikler bir ROLLBACK TRANSACTION deyimle silinir.
İşlem durdurma hatası oluşursa veya herhangi bir çalışma zamanı hatası oluşursa ve XACT_ABORT oturum seçeneği olarak ONayarlanırsa bir işlem otomatik olarak geri alınabilir. Daha fazla bilgi için bkz . SET XACT_ABORT.
BEGIN TRANSACTION deyimini veren oturum için yerel bir işlem başlatır. Geçerli işlem yalıtım düzeyi ayarlarına bağlı olarak, oturum tarafından verilen Transact-SQL deyimlerini desteklemek için alınan kaynaklar, bir COMMIT TRANSACTION veya ROLLBACK TRANSACTION deyimiyle tamamlanana kadar işlem tarafından kilitlenir. Uzun süre bekleyen işlemler, diğer oturumların bu kilitli kaynaklara erişmesini engelleyebilir ve işlem günlüğü kesilmesini ve sürüm deposu temizlemesini de engelleyebilir.
Yerel bir işlem başlatılsa BEGIN TRANSACTION da, uygulama , veya INSERT deyimini yürütme UPDATEDELETEgibi günlüğe kaydedilmesi gereken bir eylem gerçekleştirene kadar işlem günlüğüne kaydedilmez. Bir işlem başlatıldıktan sonra Veritabanı Altyapısı, deyimlerin işlem yalıtım düzeyini SELECT korumak için kilit alma gibi eylemler gerçekleştirebilir, ancak uygulama bir değişiklik eylemi gerçekleştirene kadar işlem günlüğüne hiçbir şey kaydedilmez.
BEGIN TRANSACTIONverdikten sonra, bir veya daha fazla iç işlemi başlatmak için yeniden sorun BEGIN TRANSACTION oluşturabilirsiniz. bir iç işlem için transaction_name belirtebilse de, sisteme yalnızca ilk (en dıştaki) işlem adı kaydedilir. Başka bir ada (geçerli bir kayıt noktası adı dışında) geri alma işlemi, deyimlerden herhangi birini geri almadan bir hata oluşturur. Deyimler yalnızca dış işlem geri alındığında geri alınır.
deyimi tarafından BEGIN TRANSACTION başlatılan yerel işlem, deyimi işlenmeden veya geri almadan önce aşağıdaki eylemler gerçekleştirilirse dağıtılmış bir işleme yükseltilir:
INSERTBağlı bir sunucudaki uzak tabloya başvuran bir ,DELETEveyaUPDATEdeyimi yürütülür.INSERTBağlı sunucuya erişmek için kullanılan OLE DB sağlayıcısı arabirimi desteklemiyorsaUPDATE,DELETEveyaITransactionJoindeyimi başarısız olur.seçeneği olarak ayarlandığında
REMOTE_PROC_TRANSACTIONSuzak saklı yordamaONbir çağrı yapılır.
Yerel Veritabanı Altyapısı örneği işlem denetleyicisi olur ve dağıtılmış işlemi yönetmek için Microsoft Dağıtılmış İşlem Düzenleyicisi'ni (MS DTC) kullanır.
Bir işlem kullanılarak BEGIN DISTRIBUTED TRANSACTIONaçıkça dağıtılmış bir işlem olarak yürütülebilir. Daha fazla bilgi için bkz. BEGIN DISTRIBUTED TRANSACTION.
SET IMPLICIT_TRANSACTIONS olarak ayarlandığındaON, deyimi BEGIN TRANSACTION bir dış ve bir iç işlem oluşturur ve 2 olarak ayarlanır@@TRANCOUNT. Daha fazla bilgi için bkz. SET IMPLICIT_TRANSACTIONS.
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.
İşaretli işlemler
seçeneği WITH MARK , işlem adının işlem günlüğüne kaydedilmesine neden olur. Bir veritabanını önceki bir duruma geri yüklerken, işaretli işlem bir tarih ve saat yerine geri yükleme noktasını belirtmek için kullanılabilir. Daha fazla bilgi için bkz. İlgili Veritabanlarını Tutarlı Bir Şekilde Kurtarmak için İşaretli İşlemleri Kullanma ve RESTORE Deyimleri.
Ayrıca, bir dizi ilgili veritabanını belirli bir paylaşılan tutarlılık durumuna kurtarmanız gerekiyorsa işlem günlüğü işaretleri gereklidir. Her veritabanının tutarlılık durumunun farkında olan bir uygulama, veritabanları arası veya dağıtılmış bir işlem kullanarak ilgili veritabanlarının işlem günlüklerine işaretler yerleştirebilir. İlgili veritabanları kümesinin bu işaretlere kurtarılması, bilinen paylaşılan tutarlılık durumuna sahip bir veritabanı kümesine neden olur.
İşaret, yalnızca veritabanı işaretli işlem tarafından güncelleştirildiyse işlem günlüğüne yerleştirilir. Verileri değiştirmeyen işlemler günlüğe kaydedilmez.
BEGIN TRANSACTION <new_name> WITH MARK bir iç işlem başlatılırken kullanılabilir. Bu durumda, <new_name> dış işlem işaretlenmediyse işlemin işaret adı olur. Aşağıdaki kavramsal örnekte, M2 işaretin adı verilmiştir.
BEGIN TRAN T1;
UPDATE table1 ...;
BEGIN TRAN M2 WITH MARK;
UPDATE table2 ...;
SELECT column1 FROM table1;
COMMIT TRAN M2;
UPDATE table3 ...;
COMMIT TRAN T1;
bir iç işlemi işaretlediğinizde, önceden işaretlenmiş bir işlemi işaretlemeye çalışırsanız aşağıdaki uyarı iletisini alırsınız:
Server: Msg 3920, Level 16, State 1, Line 3
WITH MARK option only applies to the first BEGIN TRAN WITH MARK.
The option is ignored.
Permissions
Rolde public üyelik gerektirir.
Examples
Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.
A. Açık bir işlem kullanma
Ş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'te SQL veritabanı, Azure Synapse Analytics, Analytics Platform Sistemi (PDW)
BEGIN TRANSACTION;
DELETE FROM HumanResources.JobCandidate
WHERE JobCandidateID = 13;
COMMIT TRANSACTION;
B. İşlemi geri alma
Ş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'te SQL veritabanı, Azure Synapse Analytics, Analytics Platform Sistemi (PDW)
Aşağıdaki örnek, bir işlemi geri döndürmenin etkisini gösterir. Bu örnekte deyimi ROLLBACK deyimini INSERT geri alır, ancak oluşturulan tablo hala mevcuttur.
CREATE TABLE ValueTable
(
id INT
);
BEGIN TRANSACTION;
INSERT INTO ValueTable VALUES (1);
INSERT INTO ValueTable VALUES (2);
ROLLBACK;
C. Bir işlemi adlandırma
Ş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ı
Aşağıdaki örnekte bir işlemin nasıl adlandırılası gösterilmektedir.
DECLARE @TranName AS VARCHAR (20);
SELECT @TranName = 'MyTransaction';
BEGIN TRANSACTION @TranName;
DELETE FROM HumanResources.JobCandidate
WHERE JobCandidateID = 13;
COMMIT TRANSACTION @TranName;
D. bir işlemi işaretleme
Ş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ı
Aşağıdaki örnek, bir işlemin nasıl işaret yapılacağını gösterir. İşlem CandidateDelete işaretlenir.
BEGIN TRANSACTION CandidateDelete
WITH MARK N'Deleting a Job Candidate';
DELETE FROM HumanResources.JobCandidate
WHERE JobCandidateID = 13;
COMMIT TRANSACTION CandidateDelete;